Nuovo progetto greenfield da specifica 🌱
Un progetto greenfield è la tentazione più grande e il rischio più alto. L’agente può generare centinaia di righe di codice in pochi secondi — ma se non hai una specifica chiave, otterrai centinaia di righe di codice sbagliato in pochi secondi. La differenza tra un greenfield riuscito e un disastro architetturale non è il tool: è la qualità della specifica che gli metti davanti.
La specifica non è un passaggio preliminare: è il contratto che sopravvive al codice.
Quando usare l’agente per questo caso 🎯
- Progetto completamente nuovo — nessun codice esistente, stack da definire.
- Prototipo rapido da specifica — hai un documento di requisiti e vuoi un MVP funzionante.
- Scaffolding iniziale — struttura del progetto, README, CI, test base.
- Migrazione da zero — riscrittura completa di un sistema legacy come nuovo progetto.
Quando NON usare l’agente ⛔
- Non hai una specifica — se l’idea è vaga, non delegare la definizione all’agente. Prima scrivi cosa vuoi, poi chiedi come farlo.
- Lo stack è critico e non l’hai definito — l’agente sceglierà la soluzione più comune, non la migliore per il tuo caso.
- Il progetto richiede integrazione hardware o fisica — l’agente non può testare ciò che non esiste nel suo ambiente.
Prompt di apertura 📝
“Partendo da questa specifica [link/blocco], costruisci [progetto]. Stack: [x]. Vincoli: [y]. Processo: prima piano, poi task, poi TDD. Non generare tutto in un passaggio.”
Esempio concreto:
“Partendo da questa specifica: ‘API REST per gestione ordini con autenticazione JWT, rate limiting, e integrazione PostgreSQL’, costruisci il progetto nella cartella corrente. Stack: Go + Chi + sqlx. Vincoli: test coverage >= 80%, nessuna dipendenza non approvata. Processo: prima piano architetturale, poi task incrementali con TDD.”
Setup del contesto 🔧
- Crea subito
AGENTS.md— definisci stack, versioni, librerie approvate e comandi di test. Questo è il contratto che guiderà l’agente per tutta la durata del progetto. - Scrivi la specifica in modo formale — obiettivi, utenti, scenari, criteri di accettazione. Non un’idea vaga: un documento che un collega potrebbe leggere e capire.
- Definisci la “costituzione” — stack, standard di codifica, vincoli non negoziabili (es. “nessuna dipendenza GPL”, “test per ogni funzione pubblica”).
Ciclo di lavoro 💡
Il flusso spec-driven è il seguente:
- Specificare: scrivi cosa vuoi che il sistema faccia (non come).
- Chiarire: l’agente fa domande sulle ambiguità. Rispondi prima di procedere.
- Pianificare: l’agente propone l’architettura dei moduli, le interfacce, lo schema dati.
- Approvare: revisiona il piano. Questo è il momento di fermare derive architetturali.
- Implementare per incrementi: MVP prima, espansione poi. Ogni incremento con test verdi.
Non generare l’intera architettura in un solo passaggio. Ogni riga non validata è un debito architetturale potenziale.
Usa modelli leggeri per le fasi iniziali (architettura, interfacce, schema dati) e riserva il modello più potente per la logica complessa.
Scelta dell’architettura greenfield 🏗️
La scelta dell’architettura è la decisione più impattante che prendi prima di delegare. Gli agenti funzionano meglio con certe strutture rispetto ad altre.
| Pattern | Success Rate | Note |
|---|---|---|
| Modular Monolith | 85-95% | Default consigliato per agenti |
| Monorepo | 75-85% | OK se il tooling è adeguato |
| Polyrepo Microservices | 30-50% | “Frequent cross-boundary schema hallucinations” |
Il monolito modulare torna di moda nell’era degli agenti. I microservizi richiedono coordination overhead che gli agenti non gestiscono bene.
Regola pratica: parti da un monolito modulare. Seleziona i moduli lungo confini di dominio chiari. Delega ai moduli indipendenti la possibilità di essere estratti in servizi separati in futuro — ma non farlo ora.
La fase clarify: 5 archetipi di domande 💬
La fase di chiarimento è dove l’agente analizza la specifica e formula domande sulle ambiguità. Ci sono 5 archetipi ricorrenti:
| Archetipo | Domanda tipica | Perché è critica |
|---|---|---|
| Scope boundary | “Deve gestire solo ordini o anche pagamenti?” | Definisce cosa NON fa il sistema |
| State concurrency | “Due utenti modificano lo stesso resource contemporaneamente?” | Impatta design dei dati e locking |
| Authentication | “JWT, session, OAuth2? Chi gestisce il token?” | Infrastruttura trasversale, difficile da cambiare dopo |
| Failure mode | “Cosa succede se il pagamento fallisce a metà?” | Define error handling e rollback |
| Depth calibration | “Servono test E2E o solo unit?” | Determina lo sforzo di testing |
Se l’agente non fa domande durante la fase clarify, è un segnale allarmante: significa che la specifica è troppo vaga o che l’agente sta saltando un passaggio critico.
Template: ADR Agent-Optimized 📋
Gli Architecture Decision Record (ADR) documentano le decisioni architetturali. Questo template è ottimizzato per l’uso con agenti, con “Agent Execution Rules” eseguibili:
|
|
La sezione “Alternatives rejected” è la più saltata e la più preziosa: documenta non solo cosa hai scelto, ma perché hai scartato le alternative. Senza di essa, un futuro sviluppatore (o un agente) potrebbe riesumare una soluzione già valutata e scartata.
Tabella anti-pattern 🚫
| Anti-pattern | Sintomo | Remediation |
|---|---|---|
| Vague Intent | Agente inventa DB schema o architettura | Specifica con Given-When-Then + Zod/JSON Schema |
| Bypassing Clarify | Rewrite massicci dopo il primo prompt | Pre-commit hooks: non procedere senza clarify |
| Ephemeral Specs | Future prompts rompono codice precedente | Specs in git con PR review, versionamento |
| Over-Specification | Spec = pseudo-code, 200 pagine | Separazione: spec.md (cosa) vs implementation (come) |
| Specification Rot | Documento diverge dal codice reale | Spec-anchored tests in CI |
| Spec Theater | Il processo è più lento del coding senza agenti | Minimal Viable Specs (MVS): solo il necessario |
Criteri di accettazione ✅
- Piano architetturale approvato prima di scrivere codice.
-
AGENTS.mdpresente con stack, versioni e comandi definiti. - Test verdi per ogni incremento.
- Nessuna deriva architetturale rispetto al piano approvato.
- README,
.gitignoree scaffolding CI presenti dalla prima release.
Approfondimenti 📚
- Scrivere prompt che funzionano — come strutturare la specifica nel prompt.
- Configurare il repository —
AGENTS.mdcome contratto di progetto. - Blog: Question-driven specification — il metodo per trasformare domande in specifiche eseguibili.
- Blog: Unknowns-driven development — come gestire l’incertezza nello sviluppo.