O que é SDD (spec-driven development) e como funciona na prática?

SDD (spec-driven development) é escrever e aprovar uma especificação antes de o código começar, tratando a spec como fonte única de verdade e não como documento descartável de planejamento. O ciclo é direto: spec do que o sistema deve fazer, plano de implementação derivado dela, quebra em tarefas atômicas e só então a geração do código. Quando o requisito muda, você edita a especificação e regenera a parte correspondente, em vez de documentar depois. Na prática dá pra rodar isso com o Spec Kit do GitHub, com o plan mode do Claude Code ou com o Kiro, da AWS
Fala aí, beleza? Tem uma diferença gigante entre jogar uma tarefa solta no agente e escrever antes, em texto, o que o sistema tem que fazer
No primeiro caso a intenção mora na sua cabeça (e some quando a janela de contexto vira)
No segundo ela vira documento, e o documento é o que manda
É exatamente isso que a sigla SDD (spec-driven development) descreve: uma metodologia em que a especificação é escrita e acordada ANTES do desenvolvimento começar, e passa a ser tratada como fonte de verdade executável, não como papel de reunião que ninguém abre de novo 🙂
Ela apareceu como resposta a um problema bem conhecido de quem usa agente pra codar: o código sai plausível, roda, parece certo… e vai se afastando aos poucos daquilo que você queria
Por que o SDD apareceu agora (e o que ele corrige no vibe coding)
A motivação declarada do SDD é o modo de falha do vibe coding com LLMs
São três sintomas que andam juntos: o agente produz código plausível que dá drift da intenção original, alucina API que não existe e vai degradando conforme o projeto cresce
Enquanto o app tem duas telas, ninguém sente
Quando ele tem autenticação, perfis, painel e regra de negócio, aí a conta chega
Gosto de comparar com fazer um corpo sem cabeça: a ideia é boa, mas não tem condução, e a decisão ruim lá do começo cobra o preço depois, travando o projeto em coisa simples
A spec como fonte única de verdade:
A virada do SDD é de ordem, não de ferramenta
A especificação vem primeiro, é acordada, e o código é derivado dela
Isso inverte a documentação que a gente conhece: em vez de escrever depois, contando o que já foi feito (documentação retrospectiva, aquela que nasce desatualizada), a spec é escrita antes e continua VIVA
Mudou o requisito? Você edita a especificação e regenera a parte de código correspondente
A spec não é um artefato morto ao lado do repo, ela é o repo do ponto de vista da intenção
Ou seja: o SDD funciona como uma baliza (guard rail)
Você usa a mesma ideia, os mesmos prompts, o mesmo agente… só não sai fora da curva
Como funciona o ciclo do SDD na prática, etapa por etapa
O ciclo canônico tem quatro movimentos: escrever a spec do que o sistema deve fazer, derivar um plano de implementação, quebrar em tarefas atômicas e só então gerar o código
Vou destrinchar em cinco passos, porque o refinamento da spec (que ainda faz parte do primeiro movimento) merece linha própria: é justamente ali que a maioria escorrega
Parece burocrático quando você lê assim, mas cada etapa existe pra matar um tipo específico de erro
Bora ver o que entra e o que sai de cada uma?
- Da intenção escrita para a spec. Entra a descrição em linguagem natural do que você quer, sai um documento com objetivos do usuário, cenários e critérios de aceite. O foco aqui é o QUE e o PORQUÊ, nunca o como. O erro comum deste passo: misturar implementação na spec. No momento que você escreve "criar tabela X com coluna Y", a spec deixou de ser acordo de intenção e virou plano disfarçado, e aí ninguém mais consegue discutir o produto sem discutir código
- Do refinamento até a spec fechar. Entra a spec crua, sai a spec sem ambiguidade. É a etapa de fazer as perguntas chatas: o que acontece se o usuário não estiver logado, o que é obrigatório, qual o comportamento no erro. O erro comum deste passo: pular o refinamento por pressa. Toda ambiguidade que você não resolve no texto vai ser resolvida pelo agente, sozinho, do jeito dele, e você só descobre qual foi a decisão depois que o código já está escrito
- Da spec para o plano. Entra o QUE já acordado, sai o COMO: stack, esquema de banco, rotas, páginas, componentes e as decisões técnicas que sustentam aquilo. É aqui que você decide as coisas que depois são caras de mudar, do modelo de dados até o ambiente onde isso vai rodar (e problema de infra tipo lentidão de I/O de disco na VPS é bem mais fácil de prevenir no plano do que de descobrir em produção). O erro comum deste passo: deixar a stack correr solta e escolher tecnologia que o agente conhece mal. Se você não vem da área técnica, apoiar-se na IA pra tomar essa decisão ajuda, mas não substitui um arquiteto experiente, e é bom saber disso
- Do plano para as tarefas atômicas. Entra o plano, sai uma lista ordenada de tarefas que dá pra executar uma por vez. Ordem por criticidade funciona bem: setup primeiro, depois a parte complexa e vital (autenticação, por exemplo), depois as funcionalidades, e uma tarefa de polimento no fim. O erro comum deste passo: gerar tarefa grande demais. "Implementar a área do usuário" não é tarefa, é epic, e o agente vai improvisar metade dela
- Das tarefas para o código. Entra uma tarefa por vez, sai implementação. E aqui vem a parte que ninguém conta: os prompts ficam CURTOS e repetitivos. Executa a tarefa 3, segue o design doc, me avisa quando terminar. O erro comum deste passo: voltar a improvisar no meio, pedindo coisa que não está na spec. Se apareceu requisito novo, o certo é subir de volta e editar a especificação, não empurrar por prompt
SDD x pedir tarefa solta para a IA: o que muda em cada etapa
A tabela abaixo compara as duas rotinas no mesmo ponto do processo
| Etapa | Pedir tarefa solta pra IA | SDD (spec-driven development) |
|---|---|---|
| Onde mora a intenção | Na sua cabeça e no histórico do chat | Num documento acordado antes do código |
| O que a IA lê antes de codar | O prompt da vez e o que sobrou de contexto | Spec, plano e a tarefa específica |
| Quando o requisito muda | Novo prompt em cima do código existente | Edita a spec e regenera a parte correspondente |
| O que sobra de documentação | Documentação escrita depois, se sobrar tempo | A própria spec, viva e mantida junto do código |
| Quando o projeto cresce | Drift da intenção e decaimento em escala | O acordo continua sendo o mesmo texto de sempre |
| Como fica o prompt do dia a dia | Cada vez mais longo e cheio de ressalva | Curto e repetitivo, apontando pra tarefa e pro plano |
SDD com o Spec Kit: instalação e os comandos do fluxo
Dá pra fazer SDD 100% na mão, escrevendo os documentos você mesmo (e funciona!)
Mas existe toolkit pra isso: o Spec Kit é o toolkit open source de spec-driven development publicado no repositório github/spec-kit
A versão 0.11.0, de 16 de junho de 2026, integra com mais de 30 agentes de código, entre eles GitHub Copilot, Claude Code, Cursor, Gemini CLI, Codex CLI e Windsurf
Bora ver na prática?
- Instale a CLI de forma persistente. O Spec Kit instala uma CLI chamada
specify
uv tool install specify-cli
- Ou rode em uso pontual, sem instalar nada. Dá pra apontar o
uvxdireto pro repositório git
uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME> --integration copilot
- Inicialize o projeto escolhendo o seu agente. É a flag
--integrationque define isso, e pro Claude Code o valor éclaude
specify init <project_name> --integration claude
O erro comum deste passo: rodar em sessão não interativa (CI ou execução via pipe) sem informar a flag. Nesse caso o Spec Kit assume GitHub Copilot como integração padrão, e você fica se perguntando por que os comandos não apareceram no agente que você usa 😀
- Entenda o que o init deixou na pasta. Ele grava os arquivos de comando na pasta do agente, por exemplo
.claude/pro Claude Code e.github/prompts/pro Copilot. Depois disso o agente lê esses arquivos direto
O erro comum deste passo: achar que precisa chamar a CLI toda vez. O specify init roda uma vez por projeto (ou no upgrade), o resto do fluxo acontece dentro do agente
- Use os comandos dentro do agente. Na maioria deles o Spec Kit se expõe como slash commands com prefixo
/speckit.. O Codex CLI em modo skills usa$speckit-no lugar. A lista incluiconstitution,specify,clarify,plan,checklist,tasks,analyze,implementeconverge
- Comece pelo caminho enxuto se for experimento. É a sequência mais curta que a documentação traz, nesta ordem:
/speckit.specify → /speckit.plan → /speckit.tasks → /speckit.implement
- Vá pro caminho completo quando for feature de produção. Aqui entram os portões de qualidade a mais
/speckit.constitution → /speckit.specify → /speckit.clarify → /speckit.plan → /speckit.checklist → /speckit.tasks → /speckit.analyze → /speckit.implement → /speckit.converge
E o que cada portão faz? O /speckit.constitution cria um documento versionado com os princípios inegociáveis do projeto (princípios centrais, restrições técnicas, convenções de time e regras de governança), rodado uma vez no começo e usado pra avaliar as etapas seguintes
O /speckit.specify gera a especificação a partir da sua descrição em linguagem natural, focada em objetivos do usuário, cenários e critérios de aceite, sem detalhe de implementação
O /speckit.clarify é iterativo: pode rodar várias vezes antes de você seguir pro plano
O /speckit.checklist gera checklists de qualidade que funcionam como teste unitário dos requisitos, validando se cada um está completo, claro, consistente e mensurável
E o /speckit.analyze varre spec.md, plan.md e tasks.md procurando conflito, lacuna e ambiguidade entre eles, além de checar aderência à constitution
- Saiba onde os artefatos vivem. Cada fase produz um arquivo em Markdown que alimenta a fase seguinte, organizados por feature na pasta
specs/
specs/[###-feature]/
├── spec.md
├── plan.md
├── research.md
├── data-model.md
├── quickstart.md
├── contracts/
└── tasks.md
Spec Kit, plan mode do Claude Code e Kiro: três formas de fazer SDD
Nem todo mundo precisa do fluxo completo, e nem todo SDD passa por toolkit
Se liga na diferença de formalidade entre os três caminhos
| O que olhar | Spec Kit | Plan mode (Claude Code) | Kiro (AWS) |
|---|---|---|---|
| Artefatos | spec.md, plan.md, tasks.md e companhia em specs/[###-feature]/ |
O plano proposto na sessão, sem edição no código-fonte | requirements.md, design.md e tasks.md |
| Como você aciona | Slash commands /speckit.* depois do specify init |
Shift+Tab ciclando default → acceptEdits → plan, ou prefixo /plan no prompt |
Pelos três arquivos da spec |
| Formato dos requisitos | Objetivos, cenários e critérios de aceite, sem implementação | Não gera artefato de requisito, ele pesquisa e propõe | User stories com critérios de aceite em notação EARS |
| Portões de qualidade | /speckit.clarify, /speckit.checklist e /speckit.analyze |
Revisão sua: Ctrl+G abre o plano no editor padrão pra editar antes de aprovar | Design aprovado antes de gerar as tarefas |
| O que acontece na execução | /speckit.implement no fim do fluxo |
Aprovar o plano sai do plan mode e o Claude começa a editar | Tarefas independentes agrupadas em ondas paralelas, por grafo de dependências do tasks.md |
| Grau de formalidade | Alto, com caminho enxuto e caminho completo | Leve, duas fases nativas | Estruturado em três documentos |
Repara que o plan mode do Claude Code é o SDD em versão mínima: ele lê arquivos, roda comandos de exploração e escreve um plano, mas não mexe no código
E isso não é gambiarra: a própria documentação recomenda separar pesquisa de código em problema complexo, analisando a base no plan mode, refinando o plano na conversa e só depois deixando implementar, porque essa abordagem em duas fases dá resultado melhor que ir direto ao código
Quando vale escrever spec e quando é exagero
Agora a parte honesta: SDD não é pra tudo
O planejamento gasta mais tokens e mais tempo na frente, então em projeto pessoal que ninguém vai usar isso vira queima de token à toa
Minha régua prática é o número de prompts: se o trabalho passa de três prompts, provavelmente compensa
Casos em que vale:
- Feature de produto, coisa que outra pessoa vai usar de verdade
- Projeto com autenticação, pagamento, perfis de usuário e dashboard (ou seja, regra de negócio pra valer)
- Base que já cresceu, onde uma mudança mal pensada respinga em cinco lugares
- Trabalho que precisa de rastro e revisão de outra pessoa, porque a spec é o que dá pra revisar antes de existir código
- Projeto que vai escalar: sem planejamento, uma funcionalidade nova obriga a reescrever a regra de negócio inteira e o consumo de token dispara
Casos em que é exagero:
- Ajuste pontual, aquele fix de uma linha
- Script descartável, que roda uma vez e morre
- Exploração, quando você ainda está descobrindo se a ideia faz sentido
- Projeto pessoal que não vai crescer nem sair da sua máquina
Dá pra pensar no processo tradicional da área técnica, aliás: reunião de planejamento, conversa com quem vai usar, entendimento do problema antes de sair programando
O SDD é isso, só que o documento final é lido por um agente também 😀
O que mudou no meu fluxo depois de adotar SDD
No vídeo abaixo eu monto um gerador de QR code do zero usando SDD, e dá pra ver o fluxo inteiro na tela
Eu estruturei o planejamento em três documentos, que é o número de etapas que eu sugiro (pode variar, mas três dá conta): o requirements, dizendo o que o app faz, o design doc, dizendo como vai ser construído, e a task list, com a ordem das tarefas, uma tarefa por prompt
Depois eu condensei os três num arquivo de contexto pro agente entender do que se trata o projeto
A task list eu ordenei por criticidade: setup inicial, depois a autenticação (por ser complexa e vital), depois a geração do QR code, depois salvar e a dashboard, e fechei com uma tarefa de polimento
O que me chamou atenção na execução: a autenticação saiu em cerca de 2 minutos
Quando eu começo projeto sem SDD, essa mesma parte costuma me tomar mais de 10 minutos de vai e volta
A aplicação subiu na porta 3002, gerei um QR code em tempo real, baixei o PNG, escaneei com o celular, o link abriu, e o login validou também
E tem uma coisa que é mais sensação do que número: depois do planejamento, os prompts ficaram curtos e repetitivos
Eu parei de caprichar em cada prompt, porque o capricho já estava no design doc
Só pra deixar claro: isso é observação de UM projeto meu, na minha máquina, não é benchmark
Os números acima valem como ordem de grandeza do que eu vi ali, não como promessa de desempenho
No vídeo dá pra acompanhar a montagem dos três documentos, a execução tarefa por tarefa e o teste da aplicação rodando de verdade
Conclusão
SDD (spec-driven development) é, no fundo, uma inversão simples: escrever a intenção ANTES, tratar essa especificação como fonte única de verdade e mantê-la viva conforme o requisito muda
O ciclo é sempre o mesmo: spec, plano, tarefas atômicas, código
O que muda é o quanto de formalidade você coloca, do plan mode nativo do Claude Code (Shift+Tab e pronto) até o caminho completo do Spec Kit com clarify, checklist e analyze
Meu conselho de próximo passo: pega uma feature PEQUENA, roda o caminho enxuto (/speckit.specify, /speckit.plan, /speckit.tasks, /speckit.implement) e compara com o jeito antigo de pedir tarefa solta
Se a diferença aparecer no seu contexto, aí sim você sobe pro caminho completo
faça o teste e me conta 😀
até o próximo post!
Perguntas frequentes
SDD funciona com o Claude Code ou é só pensado pra GitHub Copilot?
Funciona com os dois. O Spec Kit inicializa o projeto com specify init <project_name> –integration claude, e os comandos de spec ficam gravados em .claude/. Do lado do Claude Code ainda dá pra somar o plan mode nativo (Shift+Tab ou prefixo /plan), que pesquisa e propõe sem editar direto o código, exatamente a lógica de planejar antes de implementar que o SDD defende.
Preciso instalar o Spec Kit pra praticar spec-driven development?
Não, dá pra fazer SDD escrevendo a spec na mão e seguindo o ciclo spec, plano, tarefas, implementação sem nenhuma ferramenta. O Spec Kit (repositório github/spec-kit) só padroniza isso em slash commands e arquivos versionados. Se quiser testar sem instalar nada fixo, dá pra rodar via uvx –from git+https://github.com/github/spec-kit.git specify init.
Quando vale a pena aplicar SDD em vez de pedir a tarefa direto pro agente?
Uso a mesma régua que comentei no post, o número de prompts: se a tarefa passa de três prompts pra ficar do jeito certo, já compensa parar e escrever a spec antes. Tarefa pequena e isolada não precisa desse processo todo. O problema aparece quando o pedido cresce e o agente começa a improvisar decisão que ninguém acordou.
Quanto tempo o SDD realmente economiza na prática?
No projeto do vídeo, o gerador de QR code, implementar a autenticação com o agente seguindo a spec levou cerca de 2 minutos. Quando eu começo um projeto do zero sem SDD, essa mesma parte costuma passar de 10 minutos de idas e voltas. É observação de um projeto só, na minha máquina, não é benchmark: a diferença não é a IA ficar mais rápida, é ela parar de chutar.
Como o Kiro, da AWS, organiza o spec-driven development?
O Kiro divide em três arquivos: requirements.md com o que construir (user stories e critérios de aceite em notação EARS), design.md com a arquitetura e a abordagem técnica, e tasks.md com as tarefas discretas, geradas só depois que o design é aprovado. Quando você manda rodar tudo, ele monta um grafo de dependências a partir do tasks.md e executa em ondas paralelas as tarefas que não dependem entre si.
Pra que serve o comando /speckit.analyze do Spec Kit?
Ele varre spec.md, plan.md e tasks.md em busca de conflito, lacuna e ambiguidade entre os três, e ainda checa se tudo está aderente à constitution do projeto. É o portão que roda antes do /speckit.implement, pra pegar incoerência enquanto ainda é só texto e não código gerado.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]