Se usi Cursor AI da un po', ti sarà capitato: l'AI ti risponde come se non avesse mai visto il tuo codice. Suggerisce funzioni che non esistono, usa nomi di variabili sbagliati, ignora le tue convenzioni. Il problema non è l'AI — è il contesto che non le hai dato. Noi, di Meteora Web, ci siamo passati. E abbiamo trovato il modo per fare in modo che Cursor capisca davvero il tuo progetto, dalla struttura delle cartelle fino ai pattern architetturali. In questa guida ti spieghiamo come.
Perché Cursor AI non capisce il mio codice senza un contesto esplicito?
Cursor non è un mago. Il modello, anche il più avanzato, vede solo il file che hai aperto o la selezione che gli passi. Non ha una visione globale del repository: non sa che usi Laravel con repository pattern, non conosce la tua gerarchia di namespace, non sa dove hai messo le funzioni helper. Se non glielo dici, lui inventa. È come un nuovo sviluppatore che arriva in azienda senza documentazione: ogni richiesta è un tiro al bersaglio.
La soluzione è il codebase context: fornire a Cursor tutte le informazioni necessarie per comprendere l'architettura, lo stack, le convenzioni di coding e le relazioni tra i file. Solo così l'AI diventa produttiva invece di essere un ostacolo.
Sponsored Protocol
Come si configura il context in Cursor per un progetto reale?
Cursor offre due strumenti principali: il file .cursorrules e i project-level settings. Vediamo entrambi.
Il file .cursorrules: il tuo manuale per l'AI
Nella radice del tuo progetto, crea un file .cursorrules (nome esatto, senza estensione). Qui dentro scrivi tutto ciò che vorresti dire a un nuovo sviluppatore che arriva sul progetto. Noi lo usiamo per ogni progetto che avviamo, sia nuovo che in manutenzione.
# .cursorrules
Sei un assistente specializzato in Laravel 11 con Livewire 3.
L'architettura è MVC con Repository Pattern.
Le viste sono in resources/views/livewire/.
I modelli sono in app/Models/ e usano trait HasFactory.
Le migration seguono la convention YYYY_MM_DD_HHmmss.
Il frontend usa Tailwind CSS 3 e Alpine.js.
I nomi delle route sono in kebab-case, es: admin.users.edit.
Tutti i controller sono in App\Http\Controllers\Admin e ereditano AdminBaseController.
Evita di usare facades dove possibile, preferisci dependency injection.
Il database è MySQL 8 con collation utf8mb4_unicode_ci.
Logging su Stack con daily file.
Più è dettagliato, meglio è. Noi aggiungiamo anche le eccezioni personalizzate, i service provider custom e le convenzioni di commit.
Sponsored Protocol
Indexing del progetto
Cursor indicizza automaticamente i file per costruire un indice di ricerca. Puoi controllare cosa escludere con .cursorignore (simile a .gitignore). Se il progetto è enorme (monorepo, node_modules, vendor), escludi le cartelle non necessarie per velocizzare l'indicizzazione.
# .cursorignore
node_modules/
vendor/
storage/logs/
public/build/
*.min.js
Importante: dopo aver modificato .cursorrules o .cursorignore, riavvia Cursor (Cmd+Shift+P -> Reload Window).
Come strutturare il progetto per massimizzare la comprensione dell'AI?
Non serve riscrivere tutto, ma alcune scelte architetturali aiutano l'AI a orientarsi.
Namespace e cartelle coerenti
Se usi un pattern come DDD (Domain Driven Design) o hexagonal architecture, assicurati che le cartelle corrispondano ai namespace. Ad esempio:
src/
Domain/
User/
User.php
UserRepository.php
UserController.php
Application/
UseCases/
Infrastructure/
Persistence/
Cursor sfrutta i nomi dei file e i namespace per associare classi. Più il progetto è organizzato, meno errori fa.
Sponsored Protocol
Documentazione in-code
I commenti PHPDoc, TypeScript type annotations e docstring aiutano l'AI a capire lo scopo di una funzione senza dover leggere tutto il corpo. Noi scriviamo sempre il tipo di ritorno e le eccezioni:
/**
* Calcola il totale con IVA per un ordine.
*
* @param Order $order
* @param float $ivaPercentuale
* @return float
* @throws InvalidOrderException se l'ordine è vuoto
*/
public function calcolaTotale(Order $order, float $ivaPercentuale): float
L'AI usa queste informazioni per suggerire chiamate corrette e per non sbagliare i tipi.
File di esempio o mock
Se il progetto ha una configurazione complessa (es. K8s, Docker, CI/CD), crea un file EXAMPLES.md o ARCHITECTURE.md che descriva i flussi principali. Aggiungi riferimento nel .cursorrules.
Quali errori comuni evitare quando si configura il context?
Abbiamo visto progetti in cui l'AI produceva codice inutile per colpa di un context mal impostato. Ecco i più frequenti.
Sponsored Protocol
Ignorare il .cursorrules
Molti sviluppatori saltano questo passaggio perché sembra noioso. Poi passano ore a correggere suggerimenti fuori strada. Noi lo consideriamo un investimento: 10 minuti di setup, ore risparmiate.
Includere troppo contesto
Scrivere un .cursorrules di 300 righe con ogni dettaglio è controproducente. Il modello può diluirsi. Concentrati su ciò che è essenziale: stack, pattern, convenzioni, eventuali librerie particolari. Lascia fuori cose ovvie (es. "PHP è un linguaggio tipizzato").
Non aggiornare il context
Il progetto evolve. Cambi lo stack? Aggiungi un modulo? Aggiorna .cursorrules. Noi lo mettiamo sotto version control e lo modifichiamo come un qualsiasi file di configurazione.
Dimenticare il .cursorignore
Se il progetto ha decine di migliaia di file (node_modules, vendor, .next), l'indicizzazione rallenta e l'AI può confondersi su quale file sia il sorgente principale. Escludi le cartelle build e dipendenze.
Come verificare che il context funzioni correttamente?
Dopo aver configurato, fai un test semplice: chiedi a Cursor di generare un nuovo controller che rispetta le tue convenzioni. Se usa il namespace giusto, lo stile corretto e i commenti PHPDoc, è a posto. Se inventa roba, rileggi il .cursorrules e verifica che non ci siano conflitti.
Sponsored Protocol
Noi abbiamo un test automatizzato: in un progetto Laravel, chiediamo di creare un model con migration e factory. Se il risultato include use HasFactory; e la migration segue il nome standard, il context è efficace.
Cosa fare adesso per avere un contesto perfetto su Cursor AI
- Crea il file .cursorrules nella root del tuo progetto con stack, pattern, convenzioni.
- Configura .cursorignore per escludere cartelle non necessarie (vendor, node_modules, build).
- Riavvia Cursor per applicare le modifiche.
- Testa con una richiesta semplice (es. "crea un controller per la gestione utenti seguendo le nostre convenzioni").
- Mantieni il file aggiornato ad ogni cambio significativo del progetto.
Se vuoi approfondire l'uso completo di Cursor AI per lo sviluppo, leggi la nostra guida principale su Cursor AI.
Link utili: Documentazione ufficiale di Cursor sul context: https://docs.cursor.com/context