Spec-driven development na prática: como escrever sua primeira spec do zero

fluxo de spec-driven development com o Spec Kit, da constituição até a primeira spec.md
Resposta rápida

Spec-driven development é escrever a especificação antes do código e deixar o agente implementar a partir dela. Neste tutorial você termina com artefato na mão: spec.md, plan.md e tasks.md dentro de specs/###-nome-da-feature/, usando o Spec Kit, toolkit open source mantido pela GitHub no repositório github/spec-kit, licença MIT. O caminho é curto: inicia o projeto com uvx, grava os princípios com /speckit.constitution, escreve a spec com /speckit.specify, fecha as brechas com /speckit.clarify, decide stack no /speckit.plan, quebra tarefas com /speckit.tasks, confere com /speckit.analyze e valida com /speckit.converge

Fala aí, beleza? Tu pede uma funcionalidade pro agente, ele responde rápido, o código até roda… e não é aquilo que tu queria

Perto, mas errado

E quase nunca é o modelo que falhou, é a especificação que nunca existiu

O spec-driven development inverte a ordem: primeiro a spec, depois o código, que nasce dela

A ideia deste tutorial não é teoria, é artefato: no final você sai com uma spec escrita, as tarefas quebradas e o resultado validado, usando o Spec Kit, toolkit open source mantido pela GitHub sob licença MIT pra construir software com qualquer agente de IA de código

Bora ver na prática? 🙂

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

O que você precisa antes de escrever a primeira spec

A lista é curta e vale conferir antes de sair digitando comando:

  • uv instalado
  • Python 3.11 ou superior
  • Git
  • um agente de código instalado

Sobre o agente: o Spec Kit funciona com mais de 30 integrações, entre CLIs e assistentes que moram dentro da IDE, e o Claude Code está entre elas

Então não precisa trocar de ferramenta pra experimentar o método, tu usa o que já usa hoje

Aviso de versão (esse aqui salva tua tarde):

A versão mais recente do Spec Kit é a v0.12.4, publicada em 6 de julho de 2026

E a antiga família de flags --ai foi removida na v0.10.0, substituída pelo sistema de --integration

Ou seja: tutorial anterior a junho de 2026 mostra comando que simplesmente não roda mais

Se tu copiar um passo de um post velho e vier erro de flag desconhecida, é isso, não é a tua máquina 😀

Passo a passo: da ideia à primeira spec escrita

A lógica do fluxo é sempre a mesma: Spec, Plan, Tasks, Implement

Cada comando gera um arquivo, e os arquivos ficam versionados na pasta da funcionalidade, em specs/###-nome-da-feature/

Escolhe uma funcionalidade PEQUENA pra fazer esse ciclo pela primeira vez, tipo um gerador de QR code numa página, não o app inteiro

1. Iniciar o projeto e escolher o agente

O uso pontual, sem instalação permanente, é feito com uvx apontando pro repositório:

uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>

Se tu já está dentro da pasta do projeto e não quer criar uma pasta nova, usa o ponto no lugar do nome:

uvx --from git+https://github.com/github/spec-kit.git specify init .

E a escolha do agente é feita pela flag --integration:

specify init <project_name> --integration claude

O erro comum deste passo: copiar a flag --ai de tutorial antigo

Ela foi removida na v0.10.0, hoje é --integration

2. Gravar os princípios do projeto com /speckit.constitution

/speckit.constitution

Esse comando grava os princípios inegociáveis do projeto em um arquivo versionado: .specify/memory/constitution.md

Pensa nele como a regra da casa, aquilo que vale pra qualquer funcionalidade que entrar depois

Se você já conhece um arquivo de convenções do time, é bem parecido, só que o agente lê antes de propor qualquer coisa

3. Escrever a spec da funcionalidade com /speckit.specify

/speckit.specify

Ele cria a especificação da funcionalidade e faz perguntas dirigidas sobre o que ficou subespecificado, incorporando as tuas respostas na spec

Aqui é O QUE o software faz e por quê, no nível de quem vai usar

O erro comum deste passo: responder vago

Se tu escrever "tem que ser rápido" e "o usuário faz login", a ambiguidade entra no artefato e sai do outro lado como código chutado

Resposta específica agora custa 30 segundos, resposta vaga custa uma refatoração depois

4. Fechar as brechas com /speckit.clarify

/speckit.clarify

Esse é o passo que a galera pula e depois reclama do resultado

Ele faz uma varredura estruturada de ambiguidades e apresenta até 5 perguntas dirigidas, uma de cada vez

Uma de cada vez é bom: tu pensa em cada decisão em vez de despachar um bloco de respostas no automático

5. Só agora decidir stack e arquitetura, no /speckit.plan

/speckit.plan

O plano é onde entra o detalhe de implementação: stack e arquitetura

O resultado vira o plan.md dentro da pasta da feature

O erro comum deste passo: enfiar detalhe de implementação lá atrás, na spec

Quando a spec já chega dizendo "usa Postgres com uma tabela assim", você não especificou o problema, você especificou uma solução que ainda nem foi discutida

6. Quebrar em tarefas executáveis com /speckit.tasks

/speckit.tasks

Gera as tarefas executáveis a partir do plano, no tasks.md

Esse arquivo é o que impede o agente de tentar fazer tudo de uma vez: ele executa uma tarefa e continua

7. Conferir a consistência com /speckit.analyze

/speckit.analyze

Ele verifica inconsistências entre spec, plano e quebra de tarefas, e roda ANTES da implementação

É o momento de pegar aquela tarefa que ficou órfã, ou o requisito que não virou tarefa nenhuma

O erro comum deste passo: achar que é opcional e ir direto pro código

Sai mais barato descobrir o furo no texto do que no diff

8. Implementar com /speckit.implement e validar com /speckit.converge

/speckit.implement
/speckit.converge

O /speckit.converge roda depois da implementação: ele avalia o código contra os artefatos e acrescenta as tarefas que faltaram

Se ele adicionar tarefas, tu roda /speckit.implement de novo, e repete até convergir

Uma observação antes da lista: a sequência oficial tem ainda o /speckit.checklist, que fica entre o /speckit.plan e o /speckit.tasks

Eu não numerei ele no passo a passo de propósito, pra tua primeira volta seguir o caminho principal, mas ele faz parte da sequência e tu vai ver o comando disponível aí

A sequência completa de comandos de barra, pra tu guardar em algum canto:

/speckit.constitution
/speckit.specify
/speckit.clarify
/speckit.plan
/speckit.checklist
/speckit.tasks
/speckit.analyze
/speckit.implement
/speckit.converge

No fim desse ciclo, tu tem spec.md, plan.md e tasks.md versionados em specs/###-nome-da-feature/

Isso é o artefato que eu prometi lá na abertura, e ele é a parte mais valiosa: o código dá pra refazer, a decisão bem escrita não 😀

Como foi escrever a spec na prática (e onde o método brilha)

No vídeo abaixo eu mostro esse método na versão manual, com 3 documentos de planejamento: requirements (o que o app faz), design doc (como vai ser construído) e o escopo de tarefas, que limita o que o agente faz em cada parte do sistema

O fluxo do Spec Kit condensa exatamente essa mesma sequência em comando

O que eu senti ali é o principal argumento do método: depois do planejamento, os prompts ficam BOBOS de simples

Vira "executa a task 3 seguindo o design doc e me avisa quando terminar"

A autenticação da demonstração saiu em cerca de 2 minutos

E eu comparo com inícios de projeto sem spec, que passavam de 10 minutos, mas fica a ressalva honesta: isso é lembrança de experiências anteriores minhas, não medição controlada lado a lado

Sem planejamento, o que eu vejo é aquele projeto corpo sem cabeça: a ideia é boa, mas não tem condução, e ele trava na hora de escalar

E o consumo de token dispara, porque a regra de negócio precisa ser reescrita inteira toda vez que entra funcionalidade nova

O spec-driven development funciona como baliza, um guard rail: a mesma ideia, os mesmos prompts, só que sem sair da curva

No vídeo tu vê a demonstração completa do fluxo numa funcionalidade pequena, do planejamento até a task rodando

E se eu não quiser instalar nada ainda?

Dá pra sentir o gostinho do método dentro do próprio Claude Code, usando o plan mode

Nesse modo ele lê arquivos, explora e escreve um plano, sem editar o código-fonte

Tu entra nele com Shift+Tab, que cicla default, acceptEdits e plan, ou prefixando um único prompt com /plan

Tome cuidado! Os atalhos do modo interativo de terminal, como o Shift+Tab, não valem no aplicativo Desktop do Claude Code, que usa o seletor de modo na interface

Não é o mesmo que ter spec versionada na pasta do projeto, mas já quebra o vício de mandar o agente codar antes de pensar 🙂

Quando vale escrever spec (e quando é burocracia)

Respondendo a pergunta que todo mundo faz: não, tu não precisa de spec pra tudo

O fluxo tem custo de tempo lá na frente, e ele se paga quando existe decisão a ser tomada

Situação Vale a spec? Por quê
Funcionalidade com regra de negócio Sim A regra precisa ficar escrita em algum lugar que não seja a tua cabeça
Projeto novo do zero Sim É onde a constitution e o plano evitam a bagunça que aparece no mês 2
Agente trabalhando em base grande Sim O escopo de tarefas impede que ele tente resolver tudo de uma vez
Feature que precisa de rastro Sim Spec, plano e tarefas ficam versionados junto do código
Ajuste de uma linha Não O ciclo custa mais que a mudança
Script descartável Não Ele morre antes de precisar de manutenção
Exploração, testar uma ideia Não Aqui tu quer velocidade, não contrato

A régua que eu uso é essa: se a funcionalidade tem mais de uma forma razoável de ser construída, escreve a spec

Se só tem um jeito óbvio, manda ver e segue o baile

Conclusão

Se tu fez o passo a passo, agora tem três arquivos versionados na pasta da tua feature: spec.md, plan.md e tasks.md

Não é teoria sobre spec-driven development, é o artefato pronto, com a decisão escrita e o rastro de como se chegou nela

O próximo passo é simples: repete o ciclo numa segunda funcionalidade pequena

Na segunda volta tu já sabe onde respondeu vago, e aí aperta a constitution com os princípios que doeram de verdade

E usa /speckit.analyze antes e /speckit.converge depois, como rede dos dois lados da implementação

Seja por toolkit ou na mão, com os documentos escritos por você, o importante é o mesmo: planejar antes, codar depois

É isso que separa um projeto que cresce daquele corpo sem cabeça que trava na primeira funcionalidade nova

Até o próximo post! =)

Perguntas frequentes

Preciso instalar o Spec Kit permanentemente pra testar spec-driven development?

Não. Dá pra usar de forma pontual com uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>, sem instalação fixa na máquina. Se quiser iniciar dentro da pasta atual do projeto, troca o nome pelo ponto no final do comando.

Qual a diferença entre /speckit.specify e /speckit.clarify?

O /speckit.specify cria a especificação da funcionalidade e já pergunta sobre o que ficou subespecificado, incorporando tua resposta na spec. O /speckit.clarify vem depois e faz uma segunda varredura, mais estruturada, apresentando até 5 perguntas dirigidas, uma de cada vez, pra fechar ambiguidade que passou batido.

O que acontece se eu pular o /speckit.analyze antes de implementar?

Você perde a checagem de consistência entre spec, plano e quebra de tarefas, que é feita justamente antes do /speckit.implement. É nesse passo que aparece a tarefa órfã ou o requisito que não virou tarefa nenhuma, e sai mais barato achar isso no texto do que depois, no diff.

O Spec Kit funciona com o Claude Code no modo Desktop?

O Claude Code está entre as mais de 30 integrações do Spec Kit, então o fluxo funciona normalmente. A diferença é só no atalho pra entrar no modo de planejamento: no terminal usa Shift+Tab ou /plan, já no aplicativo Desktop esse ciclo de Shift+Tab não vale e a troca é feita pelo seletor de modo da interface.

Spec-driven development é mais rápido que o jeito tradicional de planejar?

Na demonstração, implementar a autenticação levou cerca de 2 minutos com o método guiado pela spec. Já a abordagem tradicional, com os 3 documentos de planejamento (requirements, design doc e tasks), costuma passar de 10 minutos só na etapa de início do projeto, pela experiência relatada.

Onde ficam guardados a spec, o plano e as tarefas gerados pelo Spec Kit?

Tudo fica versionado dentro de specs/###-nome-da-feature/, numa pasta por funcionalidade, com os arquivos spec.md, plan.md e tasks.md. Os princípios gerais do projeto, por sua vez, ficam à parte, em .specify/memory/constitution.md, gravados pelo /speckit.constitution.




Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares