Torna al blog

Il workflow di sviluppo Spec-First con Claude Code

Il workflow di sviluppo Spec-First con Claude Code

C'e un divario crescente tra gli sviluppatori che ottengono output affidabile da Claude Code e quelli che passano meta giornata a disfare cio che l'agente ha appena costruito. La differenza non e talento, esperienza o qualche trucco segreto di prompt engineering. E una questione di metodologia. Gli sviluppatori che rilasciano software di produzione con agenti IA sono convergiti su uno schema, che lo chiamino cosi o meno: definire cosa si vuole prima che l'agente inizi a scrivere codice.

Questo articolo da un nome a quello schema. Lo sviluppo spec-first e una metodologia per l'ingegneria del software assistita da IA. Non una vaga "best practice." Un ciclo di vita strutturato e ripetibile con fasi definite, checkpoint chiari e artefatti concreti ad ogni passo. Se hai cercato un modo per rendere l'output di Claude Code prevedibile abbastanza da scommettere il tuo calendario di rilascio, questo e il framework.

Il tetto del Vibe Coding

"Vibe coding" e entrato nel vocabolario a inizio 2025. La proposta: descrivi cosa vuoi in linguaggio naturale, lascia che l'IA lo scriva, itera finche non sembra giusto. Per prototipi, progetti del weekend e script una tantum, il vibe coding funziona. Si ottiene qualcosa di funzionale velocemente, e se si rompe dopo, la posta in gioco e bassa.

Il software di produzione opera sotto vincoli diversi. Il codice deve integrarsi con una codebase esistente, soddisfare requisiti specifici e sopravvivere al contatto con altre persone che lo manterranno. Quando il vibe coding incontra questi vincoli, le modalita di fallimento sono prevedibili.

Il primo fallimento e la deriva. Descrivi una funzionalita vagamente, l'agente implementa la sua interpretazione, aggiusti, l'agente reimplementa la sua interpretazione corretta. Tre iterazioni dopo, hai codice funzionante che non soddisfa nessuno dei tuoi requisiti originali perche ogni iterazione ha spostato il bersaglio. Stai convergendo su cio che l'agente pensa tu voglia, non su cio di cui hai realmente bisogno.

Il secondo fallimento sono le decisioni invisibili. Ogni lacuna nella tua descrizione e una decisione che l'agente prende silenziosamente. Schema del database, strategia di gestione errori, forma dell'API, regole di validazione, scelta delle librerie. Scopri queste decisioni durante il code review, o peggio, in produzione. L'agente non ha preso decisioni cattive. Ha preso decisioni non commissionate, e non avevi meccanismo per intercettarle prima che fossero incorporate nell'implementazione.

Il terzo fallimento e la paralisi da review. Un diff di 600 righe in cui l'agente ha scelto l'architettura, il modello dati, i codici di errore e la gestione dei casi limite non e revisionabile nel senso tradizionale. Non stai revisionando codice contro una spec. Stai ricostruendo la spec dal codice, poi decidendo se sei d'accordo. Questo richiede piu tempo di quanto ne avrebbe richiesto scrivere la spec.

Il vibe coding raggiunge un tetto perche confonde due attivita distinte: decidere cosa costruire e costruirlo. Lo sviluppo spec-first le separa.

Spec-First come metodologia

Lo sviluppo spec-first e un ciclo di vita a quattro fasi. Ogni fase produce un artefatto concreto. Ogni transizione ha una condizione di gate chiara. La metodologia funziona con qualsiasi agente di codifica IA, ma gli esempi in questo articolo usano Claude Code perche e li che la community sta iterando piu velocemente.

Fase 1: Brainstorm

Tu e l'agente (o solo tu) esplorate lo spazio del problema. Quali sono i vincoli? Quali approcci esistono? Quali sono i compromessi? E conversazionale. Non ti stai impegnando su nulla. Stai mappando il territorio.

La condizione di gate: hai un approccio preferito e puoi articolare perche questo approccio e non le alternative.

Il brainstorming con Claude Code e prezioso perche l'agente ha ampie conoscenze di pattern e librerie. L'errore e saltare dal brainstorm direttamente al codice. Il brainstorm fa emergere opzioni. Non sceglie tra di esse. Lo fai tu.

Fase 2: Spec

Scrivi la decisione. Questo e il contratto contro cui l'agente implementera. Una spec non e una user story, non e un ticket Jira, non e un paragrafo di prosa. E un documento strutturato con:

  • Dichiarazione del problema: cosa e rotto o mancante, in termini concreti
  • Approccio proposto: la soluzione scelta dalla fase di brainstorm
  • File interessati: quali file l'agente deve toccare (e implicitamente, quali no)
  • Criteri di accettazione: condizioni testabili che definiscono "fatto"
  • Fuori ambito: cosa l'agente deve esplicitamente evitare

I criteri di accettazione sono l'elemento piu importante. Ognuno deve essere un'azione concreta con un risultato osservabile. "L'autenticazione dovrebbe funzionare" non e un criterio. "Inviare credenziali valide restituisce un 200 con un token di sessione; inviare credenziali non valide restituisce un 401 senza token" lo e.

La sezione fuori ambito previene il gold-plating. Senza di essa, gli agenti "miglioreranno" codice adiacente, faranno refactoring di file che hanno notato disordinati, o aggiungeranno funzionalita che sembrano correlate. Ogni minuto che l'agente spende su lavoro non richiesto e un minuto che tu spendi revisionando lavoro non richiesto.

La condizione di gate: qualcuno che non era al brainstorm potrebbe leggere questa spec e costruire la cosa giusta.

Fase 3: Implementazione

L'agente esegue contro la spec. Non contro una conversazione. Non contro un ricordo di cio che avete discusso. Contro un documento concreto con criteri testabili.

Prima di scrivere codice, l'agente produce un piano: una lista numerata di modifiche che intende fare, quali file modifichera e come verifichera il risultato. Questo piano e un checkpoint di due minuti. Lo leggi, confermi che corrisponde alla tua intenzione e dai il via libera all'implementazione. Oppure intercetti un malinteso e lo correggi. In entrambi i casi, hai investito due minuti invece di venti.

Il pattern plan-before-code non e burocrazia. E il singolo intervento a maggior leva in tutto il workflow. La maggior parte degli errori di implementazione non sono errori di codifica. Sono errori di comprensione: l'agente ha frainteso la spec. Intercettare un errore di comprensione in un piano costa due minuti. Intercettarlo in un diff di 400 righe costa venti. Intercettarlo in produzione costa un giorno.

La condizione di gate: l'agente ha pubblicato un rapporto di completamento con affermazioni specifiche su cosa e stato costruito e come e stato verificato.

Fase 4: Verifica

Tu o un processo QA confermate l'implementazione contro la spec. Non "sembra giusto?" ma "soddisfa ogni criterio di accettazione?"

La verifica e meccanica. Prendi ogni criterio dalla spec, esegui il test (lancia un comando, apri un browser, innesca un evento) e registri il risultato: superato o fallito. I criteri che falliscono tornano alla Fase 3. La verifica e documentata insieme all'implementazione cosi che chiunque legga il task tra sei mesi possa vedere esattamente cosa e stato testato.

La condizione di gate: ogni criterio di accettazione ha un risultato registrato superato/fallito.

Questo e il ciclo di vita completo. Quattro fasi, quattro artefatti (motivazione dell'approccio, spec, piano di implementazione, registro di verifica), quattro condizioni di gate. Le fasi sono sequenziali ma leggere. Per una funzionalita di media dimensione, le fasi 1 e 2 richiedono 15-20 minuti. La fase 3 richiede il tempo dell'implementazione. La fase 4 richiede 5-10 minuti.

Perche conta di piu con gli agenti che con gli umani

Ogni argomento per scrivere spec precede l'IA. "Scrivi i requisiti prima del codice" e un consiglio che esiste da prima che la maggior parte di noi nascesse. Allora perche inquadrarlo come qualcosa di specifico allo sviluppo assistito da IA?

Perche gli agenti cambiano la funzione di costo.

Uno sviluppatore umano che riceve un requisito vago si fermera e fara domande. "Intendevi auth con password o SSO?" "Deve funzionare su mobile?" "Cosa succede quando il token scade?" Ogni domanda e un mini-checkpoint che spinge l'implementazione verso il target corretto. Il costo di una spec vaga con uno sviluppatore umano e qualche thread Slack e forse un pomeriggio di rework.

Un agente che riceve un requisito vago non si fermera. Prendera ogni decisione ambigua silenziosamente, si impegnera su un approccio e ti presentera un'implementazione finita. Il costo di una spec vaga con un agente e un'implementazione finita che potrebbe essere completamente sbagliata, piu il tempo che impieghi a scoprire che e sbagliata, piu il tempo per rifarla.

L'asimmetria e netta. Gli agenti sono piu veloci nell'esecuzione e peggiori nel giudizio rispetto agli sviluppatori umani. Ogni ambiguita nella spec e una chiamata di giudizio, e ogni chiamata di giudizio che l'agente fa senza guida e un lancio di moneta su se il risultato corrisponde alla tua intenzione. Una spec elimina i lanci di moneta.

C'e una seconda ragione, piu sottile. Gli agenti non obiettano. Un ingegnere senior che riceve una spec cattiva dira "questo non ha senso a causa di X." Un agente implementera fedelmente una spec cattiva e produrra output fedelmente errato. Lo sviluppo spec-first ti costringe a mettere alla prova il tuo pensiero prima di consegnarlo a un'entita che lo eseguira senza fare domande. La spec non e solo per l'agente. E per te.

Questo e il problema che Beadbox risolve.

Visibilita in tempo reale su cosa sta facendo l'intera flotta di agenti.

Provalo gratis durante la beta →

Il checkpoint plan-before-code

Se prendi una sola pratica da questo articolo e ignori il resto, prendi questa.

Prima che l'agente scriva codice, richiedi che pubblichi un piano di implementazione. Non codice. Non un diff. Uno schema strutturato di cio che intende fare.

Un piano appare cosi: passi numerati in ordine di esecuzione, file da modificare, cambiamenti di logica in ogni file e l'approccio di verifica. L'agente lo produce in circa trenta secondi. Lo leggi in circa due minuti. In quei due minuti, puoi intercettare:

  • Violazioni di ambito: l'agente pianifica di modificare file non elencati nella spec
  • Disallineamenti architetturali: l'agente ha scelto un approccio in conflitto con pattern esistenti
  • Passi mancanti: il piano non affronta un criterio di accettazione
  • Sovraingegnerizzazione: l'agente pianifica di costruire astrazioni non giustificate

La revisione del piano di 2 minuti sostituisce la revisione del diff di 20 minuti dove scopri questi problemi dopo che sono gia stati costruiti. E il gate di qualita meno costoso nell'ingegneria del software.

Ho scritto una guida dettagliata del pattern plan-before-code in Sviluppo spec-driven con Claude Code, inclusi template di spec e formati di rapporti di completamento. Questo articolo si concentra sul perche il pattern funziona; quello sul come implementarlo.

La verifica come step di prima classe

La fase con meno investimento nel workflow della maggior parte degli sviluppatori e la verifica. L'agente dice "fatto." Lo sviluppatore da un'occhiata al diff. Il merge avviene. Il bug emerge due giorni dopo quando un utente colpisce il caso limite numero tre dei criteri di accettazione.

Lo sviluppo spec-first tratta la verifica come uno step formale con i propri artefatti. Il rapporto di completamento mappa ogni criterio di accettazione a un controllo concreto:

  • Criterio: "Il cambio di workspace ripristina lo stato dei filtri salvato."
  • Controllo: Aprire l'app, impostare i filtri nel workspace A, passare al workspace B, tornare al workspace A, osservare che i filtri sono ripristinati.
  • Risultato: Superato.

Questo non e overhead. E lo step che determina se l'implementazione soddisfa realmente la spec. Senza di esso, la spec e una lista dei desideri e i criteri di accettazione sono aspirazionali.

Il registro di verifica risolve anche un problema a valle: il code review. Quando un revisore apre il pull request, legge la spec, legge il registro di verifica e revisiona il diff con contesto completo. Il tempo di revisione si riduce perche il revisore sta confermando un'affermazione verificata, non conducendo un'indagine.

Quando fai girare piu agenti in parallelo, ognuno che implementa una spec diversa, la disciplina di verifica e la differenza tra una pipeline controllata e un mucchio di codice che "probabilmente funziona." Ogni spec ha criteri. Ogni implementazione ha un rapporto di completamento. Ogni rapporto mappa criteri a controlli. Niente viene rilasciato senza verifica registrata.

Obiezioni e compromessi onesti

Lo sviluppo spec-first non e gratuito. Le obiezioni sono reali e meritano una risposta diretta.

"Scrivere spec mi rallenta." Isolatamente, si. Scrivere una spec per una funzionalita richiede 15-20 minuti. Ma recuperi quel tempo (e altro) nelle fasi di implementazione e revisione. Un agente con una spec chiara produce un'implementazione corretta piu spesso di un agente con un prompt vago. Meno iterazioni, meno rework, revisioni piu brevi. L'effetto netto per funzionalita di sostanza e consegna piu veloce, non piu lenta.

Per modifiche banali (rinominare una variabile, correggere un typo, incrementare una versione), le spec sono overhead inutile. Spec-first e per lavoro dove l'implementazione richiede decisioni. Se la modifica e meccanica e non ambigua, salta la spec.

"Il mio agente e abbastanza buono senza spec." Per alcuni task, probabilmente vero. Claude Code e notevolmente capace di inferire l'intenzione da descrizioni brevi. La domanda non e se l'agente puo produrre buon output da istruzioni vaghe. E se lo fa in modo affidabile. Se sei a tuo agio con rework occasionale e tempi di revisione imprevedibili, il vibe coding puo bastare per il tuo caso d'uso. Spec-first ripaga quando consistenza e prevedibilita contano: quando la funzionalita e complessa, quando il codice va in produzione, quando qualcun altro lo manterra.

"Le spec diventano obsolete." Preoccupazione valida. Una spec scritta durante il brainstorm potrebbe non sopravvivere al contatto con la realta. La soluzione non e saltare le spec. E aggiornare la spec quando il piano rivela nuove informazioni. Se il piano dell'agente mostra che l'approccio nella spec non funzionera, rivedi la spec prima di procedere. La spec e un documento vivo per la durata dell'implementazione. Diventa un documento storico dopo la verifica.

"Questo e solo waterfall." No. Il fallimento del waterfall erano grandi spec per grandi progetti con lunghi cicli di feedback. Lo sviluppo spec-first opera a livello di task: una spec per funzionalita o fix, scritta in 15-20 minuti, implementata in ore, verificata lo stesso giorno. Il ciclo di feedback e stretto. L'investimento per spec e piccolo. Se la spec e sbagliata, lo scopri durante la revisione del piano, non sei mesi dopo.

Strumenti per il ciclo di vita Spec-First

La metodologia funziona con qualsiasi sistema di task: GitHub Issues, Linear, Notion, file di testo semplici. Cio che conta e che spec, piano, note di implementazione e risultati di verifica vivano in un unico posto, collegati a un task.

Se cerchi un sistema progettato per questo workflow, beads e un issue tracker open-source e Git-nativo che contiene l'intero ciclo di vita. Ogni "bead" porta una descrizione (la tua spec), un thread di commenti (piani e rapporti di completamento), uno stato (open, in_progress, ready_for_qa, done) e metadati come dipendenze e priorita. Il CLI bd opera dal terminale, il che significa che gli agenti possono leggere spec, pubblicare piani e riportare completamenti senza lasciare il loro ambiente di lavoro.

bd create --title "Persist filter state across workspaces" \
  --description "## Problem ..." --type feature --priority p2

bd update bb-a1b2 --claim --actor eng1
bd comments add bb-a1b2 --author eng1 "PLAN: ..."

# After implementation:
bd comments add bb-a1b2 --author eng1 "DONE: ... Commit: a1b2c3d"
bd update bb-a1b2 --status ready_for_qa

L'intero ciclo di vita avviene nel CLI. Sei mesi dopo, bd show bb-a1b2 restituisce la storia completa di cio che e stato specificato, pianificato, costruito e verificato.

Quando fai girare un agente attraverso questo ciclo di vita, il CLI e sufficiente. Quando ne fai girare cinque o dieci in parallelo, ognuno a uno stadio diverso della pipeline spec-implement-verify, devi vedere lo stato della pipeline a colpo d'occhio. Beadbox e una dashboard in tempo reale che mostra quali spec sono aperte, quali hanno piani in attesa di revisione, quali sono in corso, quali sono bloccate e quali sono pronte per la verifica. Monitora lo stesso database beads in cui scrivono gli agenti, aggiornandosi in tempo reale quando gli stati cambiano.

Non hai bisogno di Beadbox per praticare lo sviluppo spec-first. La metodologia e agnostica rispetto agli strumenti. Ma quando i flussi di lavoro paralleli trasformano la tua pipeline in una coda di task che non puoi tracciare a memoria, il livello visuale cambia la velocita con cui puoi revisionare, sbloccare e rilasciare.

Il cambiamento piu ampio

Lo sviluppo spec-first non e una reazione al fatto che gli agenti di codifica IA siano cattivi. E il riconoscimento che sono bravi nelle cose sbagliate senza guida. Gli agenti sono esecutori straordinariamente capaci. Scrivono sintassi corretta, seguono pattern, gestiscono boilerplate e producono un volume che nessun umano puo eguagliare. Cio che gli manca e il contesto per prendere buone decisioni su cosa costruire. Quel contesto viene da te, e la spec e il veicolo.

Gli sviluppatori che prospereranno nell'ingegneria assistita da IA non sono quelli che scrivono i migliori prompt. Sono quelli che scrivono le migliori spec. I prompt sono effimeri. Le spec sono durevoli. I prompt ottimizzano per una singola interazione. Le spec ottimizzano per un ciclo di vita: brainstorm, definire, implementare, verificare.

Questo non e un workaround temporaneo in attesa che gli agenti diventino piu intelligenti. Anche se i modelli migliorano, l'asimmetria fondamentale rimane: l'umano sa di cosa ha bisogno il business; l'agente sa come scrivere codice. Una spec collega i due. Modelli migliori eseguiranno le spec piu velocemente, ma la necessita della spec stessa non scompare. Diventa piu importante con la scalabilita, perche piu agenti che eseguono contro istruzioni vaghe producono output piu divergente.

Se hai fatto girare agenti Claude Code e trovato i risultati inconsistenti, o speso troppo tempo in revisione, o faticato a coordinare flussi di lavoro paralleli, prova questo: prima della prossima funzionalita, prenditi 15 minuti per scrivere una spec con criteri di accettazione testabili, richiedi che l'agente pubblichi un piano prima di codificare, e verifica l'output criterio per criterio. Un ciclo ti mostrera la differenza.

Se stai costruendo workflow come questo, metti una stella a Beadbox su GitHub.

Like what you read?

Beadbox is a real-time dashboard for AI agent coordination. Free during the beta.

Share