Spec driven development con AI
Quando usare specifiche, piani e task invece di prompt liberi
Lo spec driven development con AI trasforma una richiesta di prodotto in artefatti espliciti: requisiti, design tecnico, task e verifiche. Serve quando un coding agent deve lavorare su feature non banali, con edge case, vincoli di architettura o più persone coinvolte. Non serve per ogni modifica: sui fix piccoli un prompt ben scritto o un /goal delimitato resta più veloce.
Risposta breve
Usa lo spec driven development quando il rischio non è scrivere codice, ma far capire all'agente che cosa deve costruire, quali vincoli rispettare e come dimostrare che il lavoro è finito. Per task piccoli resta su prompt, chat o /goal. Per feature multi-file passa a requisiti, piano, task e verifica.
- Prompt libero: ok per bug piccoli, refactor locali, spike e domande esplorative.
- Spec driven development: utile per feature con requisiti, edge case, stati, permessi, test e handoff tra product e engineering.
- Rischio principale: se la specifica è vaga o obsoleta, l'agente esegue meglio la cosa sbagliata.
Confronto rapido
| Criterio | Spec driven | Prompt libero |
|---|---|---|
| Fonte di verità | Requisiti, design, task e criteri di verifica restano in file leggibili dal team e dagli agenti | La fonte principale è la conversazione, con contesto più fragile e meno riusabile |
| Input iniziale | Descrivi cosa costruire, perché, vincoli, utenti, casi limite e risultato atteso | Chiedi direttamente una patch, una spiegazione o una modifica circoscritta |
| Artefatti | requirements.md, design.md, tasks.md, checklist, test plan o issue collegate | Prompt, risposta dell'agente, diff e pochi comandi di verifica |
| Quando rende | Feature multi-step, team, sistemi regolati, onboarding su codebase, agenti multipli | Bug evidente, copy, styling locale, test unitario mirato, refactor piccolo |
| Rischio | Drift tra specifica e codice, eccesso di processo, fiducia cieca nei documenti generati | Ambiguità, perdita di contesto, retry lunghi, agenti che inventano dettagli mancanti |
Scenari pratici
Il costo qui è tempo di preparazione: più struttura riduce ambiguità e retry, ma può diventare burocrazia quando il task è piccolo.
Bug piccolo
Stack trace e file mirato · Patch e test
Scenario
Prompt o /goal breve
Scelta pratica
La specifica completa rallenta più di quanto aiuti
Se puoi indicare file, errore e test in due righe, non serve aprire un flusso SDD.
Feature prodotto
Utente, flusso, stati, edge case · Requisiti, design, task e implementazione
Scenario
Spec driven
Scelta pratica
Riduce ambiguità prima che l'agente modifichi molti file
Quando il problema ha più interpretazioni valide, scrivere la specifica fa risparmiare iterazioni.
Team con più agenti
Regole, ownership e verifiche · Task separabili
Scenario
Spec più task atomici
Scelta pratica
Aiuta a evitare conflitti e lavoro duplicato tra agenti o persone
La specifica diventa un contratto comune: chi fa cosa, con quale verifica e con quali limiti.
Sistema sensibile
Policy, permessi, dati e sicurezza · Checklist e tracciabilità
Scenario
Spec con vincoli espliciti
Scelta pratica
Serve evitare che l'agente ottimizzi solo per far passare il caso felice
Per auth, pagamenti, privacy e compliance, i vincoli devono stare prima della generazione del codice.
Cosa significa spec driven development con AI
Spec driven development significa trattare la specifica come artefatto principale del lavoro software. Nel contesto degli agenti AI, la richiesta non passa subito a una patch: viene trasformata prima in requisiti, design tecnico, task e criteri di verifica. Il codice arriva dopo, come esecuzione di un contratto più esplicito.
- Il punto non è scrivere più documentazione, ma togliere ambiguità prima che l'agente tocchi il codice.
- Una buona specifica dice cosa costruire, cosa non costruire, quali casi limite coprire e come verificare il risultato.
- Il valore cresce quando più persone o più agenti devono condividere la stessa intenzione.
- Il valore cala quando il task è piccolo, locale e già verificabile con un test semplice.
Quando basta un prompt libero
Il prompt libero resta la scelta giusta quando il costo di strutturare supera il rischio del task. Se devi correggere un errore evidente, spiegare una funzione, aggiornare copy, sistemare uno stile locale o aggiungere un test piccolo, puoi dare contesto mirato e chiedere una patch. In questi casi una specifica formale può diventare rumore.
- Il risultato atteso è chiaro in una frase.
- I file coinvolti sono pochi e facili da nominare.
- Il fallimento è economico: puoi leggere il diff e correggere subito.
- La verifica è immediata: un test, una build, uno screenshot o una query.
Quando passare a SDD
Passa a SDD quando la domanda vera non è come scrivere codice, ma quale comportamento deve avere il sistema. Feature con stati, permessi, pagamenti, onboarding, ruoli utente, migrazioni o design system hanno troppe decisioni implicite. Se lasci quelle decisioni nel prompt, l'agente le riempie con assunzioni.
- Ci sono più stakeholder: product, design, engineering, compliance o cliente.
- Ci sono edge case che il caso felice non copre.
- La feature tocca più moduli o più repository.
- Serve dividere il lavoro in task indipendenti per agenti o persone diverse.
- Vuoi poter rileggere la decisione tra una settimana, non solo nel transcript della chat.
Spec Kit, GSD e altri pattern pratici
Il riferimento più pratico da cui partire è GitHub Spec Kit, perché offre template e comandi portabili per passare da intenzione a specifica, piano, task e implementazione. GSD, Get Shit Done, è interessante come pattern più pragmatico: meno specifica formale, più isolamento del lavoro, review e consegna. Kiro può essere utile se vuoi un IDE che guidi requisiti, design e task nello stesso ambiente, soprattutto su feature che devono passare dal prototipo a un lavoro più tracciabile.
- Spec Kit parte da una costituzione di progetto, poi usa passaggi come specify, plan, tasks e implement.
- GSD è da valutare quando vuoi un approccio operativo centrato su worktree, esecuzione rapida e review umana.
- Kiro genera requirements.md, design.md e tasks.md, ma oggi è più un buon esempio di prodotto spec-first che una scelta universale.
- I requisiti in stile EARS aiutano a scrivere condizioni testabili: quando succede X, il sistema deve fare Y.
- BMAD, OpenSpec e altri framework meritano attenzione, ma vanno scelti per processo e portabilità, non per hype.
- Questi pattern non sostituiscono Claude Code, Codex o Cursor: danno loro un contratto migliore da eseguire.
Starter kit pratico
Per iniziare non serve adottare subito un framework completo. Parti da un pattern minimo e aggiungi strumenti solo quando il processo si ripete. La combinazione più pratica è: template di requisiti, formato testabile per i criteri di accettazione, task piccoli e una skill o istruzione riusabile per far ripetere il flusso all'agente.
- Pattern minimo: idea, requisiti, criteri di accettazione, design breve, task atomici, verifica.
- Formato requisiti: usa EARS quando vuoi condizioni testabili, per esempio WHEN succede X, il sistema SHALL fare Y.
- Formato scenari: usa Given, When, Then quando vuoi esempi vicini a test e comportamento utente.
- Framework guidato: prova Spec Kit se vuoi comandi e template portabili tra agenti di coding.
- Delivery pragmatico: valuta GSD se il collo di bottiglia è far lavorare agenti in isolamento e rivedere output rapidamente.
- IDE guidato: guarda Kiro Specs come esempio di requisiti, design e task dentro un ambiente integrato.
- Workflow ripetuto: trasformalo in una skill, in un template di issue o in una sezione di AGENTS.md.
Il compromesso nascosto
La specifica non è garanzia di qualità. Può essere incompleta, vecchia, troppo lunga o scritta con il tono giusto ma senza vincoli reali. Uno dei rischi principali è il drift: il documento dice una cosa, il codice evolve in un'altra direzione, e l'agente continua a trattare il documento come vero.
- Aggiorna la specifica quando cambia una decisione, non solo quando inizia il task.
- Tieni i task piccoli: se una voce richiede molti file e molte decisioni, va divisa.
- Non usare SDD per evitare review umana: usalo per rendere la review più semplice.
- Chiedi all'agente di citare file, test e vincoli che ha usato, così puoi vedere se ha lavorato su prove o su memoria.
Workflow consigliato
Per un team piccolo, il flusso migliore è leggero: una pagina di requisiti, un piano tecnico breve, una lista di task atomici e una verifica finale. Non serve imitare un processo enterprise. Serve dare all'agente abbastanza struttura per non inventare prodotto, architettura o criteri di successo.
- Scrivi prima il risultato utente e i non-obiettivi.
- Trasforma i requisiti in criteri verificabili, inclusi errori e permessi.
- Fai generare un design tecnico e chiedi all'agente di indicare rischi e file coinvolti.
- Dividi in task piccoli, ciascuno con test o controllo di completamento.
- Solo dopo avvia Claude Code, Codex, Cursor o Copilot sull'implementazione.
Prompt pratico per iniziare:
Voglio trasformare questa richiesta in una mini specifica per un coding agent.
Richiesta:
[descrivi feature o bug]
Prima fammi domande se manca contesto.
Poi produci:
1. requisiti utente
2. non-obiettivi
3. criteri di accettazione testabili
4. design tecnico breve
5. task atomici
6. comando o controllo di verifica per ogni task
Non scrivere codice finché non approvo la specifica.Come collegarlo a /goal e AGENTS.md
SDD non sostituisce le istruzioni di progetto o il goal operativo. AGENTS.md spiega all'agente come lavorare nel repository: comandi, stile, file da non toccare, vincoli editoriali o tecnici. La specifica spiega che cosa costruire per questa feature. /goal può essere il ponte finale: esegui questi task, rispetta questa spec, e dimostra il risultato con questi controlli.
- AGENTS.md: regole stabili del repository.
- Spec: intenzione e vincoli della feature corrente.
- /goal: condizione di completamento per la sessione agentica.
- Task list: unità di lavoro che puoi assegnare, verificare e chiudere una per una.
Domande frequenti
Spec driven development e vibe coding sono opposti?
Non sempre. Il vibe coding è utile per esplorare rapidamente un'idea. SDD serve quando quella idea deve diventare una feature mantenibile, verificabile e condivisa.
Devo usare Spec Kit o Kiro per fare SDD?
No. Puoi iniziare con tre file semplici: requisiti, design e task. Spec Kit e Kiro aiutano quando vuoi template, comandi e un flusso più guidato.
SDD rallenta lo sviluppo?
Sì, se lo applichi a task piccoli. Su feature ambigue o rischiose spesso accelera, perché riduce retry, patch sbagliate e discussioni dopo il diff.
Funziona con Claude Code, Codex e Cursor?
Sì. Il principio è portabile: dai all'agente una specifica leggibile, task piccoli e criteri di verifica. Cambia il modo in cui avvii il lavoro, non il tool obbligatorio.
Qual è il segnale che devo fermare il prompt libero e scrivere una spec?
Se ti accorgi che stai spiegando più volte comportamento, edge case, vincoli e test, è il momento di fermarti e trasformare tutto in una specifica.