Voltar ao blog

Spec-driven development

Desenvolvimento orientado por especificações em empresas: do briefing ao contrato revisável

Como aplicar spec-driven development para transformar intenção de negócio em especificações vivas e revisáveis para engenharia, governança e agentes de código.

Fluxo de revisão empresarial em que um briefing passa por decisões e etapas de aprovação até se tornar uma especificação aprovada
Ilustração editorial teoai sobre o fluxo entre intenção, contexto e execução.

Na segunda-feira, uma empresa aprova uma mudança na cobrança e envia o mesmo briefing para produto, segurança, engenharia e um agente de código. Na sexta, cada área chega a uma interpretação diferente do que significa exportar dados com segurança, e a política só é descoberta quando o pull request aparece. O desenvolvimento orientado por especificações, ou spec-driven development, evita esse desvio ao manter intenção, regras e critérios de aceite em uma especificação viva, revisável antes da implementação.

A especificação como contrato de trabalho

É justamente esse tipo de semana que uma especificação precisa evitar. O briefing explica a oportunidade; a especificação transforma essa intenção em um contrato de execução, ligando o resultado esperado às regras de negócio, aos limites técnicos e às evidências que mostrarão que o trabalho terminou. Sem essa ponte, cada troca de equipe exige uma nova interpretação.

A especificação útil não tenta antecipar cada linha de código. Ela preserva o que não pode se perder e deixa a engenharia escolher a melhor implementação.

  • Objetivo e resultado observável para a pessoa usuária ou para o negócio
  • Atores, estados, regras, exceções e dependências relevantes
  • Limites do escopo e decisões ainda em aberto
  • Critérios de aceite que pessoas e automações conseguem verificar

Do briefing à especificação revisável

O fluxo pode começar com uma conversa, um documento ou um conjunto de evidências. Em vez de mandar esse material direto para a implementação, o time primeiro organiza a intenção e torna as lacunas visíveis. Perguntas sobre permissões, estados de erro, integrações e dados deixam de surgir de surpresa no pull request.

É aqui que o assunto deixa de ser documentação e vira velocidade operacional. Quando o contrato está claro, o agente de código não precisa adivinhar o que produto quis dizer; ele pode explorar o repositório para descobrir como encaixar a mudança. Uma sequência curta costuma funcionar melhor que uma cerimônia rígida:

  • Registrar o problema, o público e o resultado desejado
  • Separar fatos, hipóteses, restrições e decisões pendentes
  • Descrever cenários principais, alternativos e de falha
  • Revisar o contrato com produto, design, engenharia e segurança
  • Versionar a decisão e vincular as mudanças à implementação correspondente
Fluxo de revisão do briefing até a spec Um briefing passa por decisões e revisão antes de virar uma spec viva. Fluxo de revisão do briefing até a spec Um briefing passa por decisões e revisão antes de virar uma spec viva. briefingdecisõesrevisãospec viva
O briefing só vira contrato de execução depois que decisões e critérios passam por revisão.

Governança sem criar outro silo

A adoção empresarial emperra quando a especificação vira mais um arquivo isolado. O artefato precisa fazer parte do fluxo real de revisão, planejamento, desenvolvimento, testes e mudanças. Diferentes áreas podem aprofundar o mesmo contrato sem criar versões concorrentes da intenção.

O nível de detalhe deve acompanhar o risco. Uma alteração reversível pode ter uma especificação curta; uma mudança regulatória, que atravessa equipes ou envolve migração de dados, precisa de mais evidências, responsáveis e critérios. A disciplina está em escolher conscientemente o grau de rigor.

Como o teoai entra

O teoai é uma plataforma em acesso antecipado para times de produto e engenharia que precisam transformar briefings, documentos e conversas em specs vivas. Ele não é mais um agente que escreve código; é a camada de governança de contexto antes do agente, onde a decisão é organizada, revisada e aprovada.

No fluxo deste artigo, ele entra depois que a intenção foi levantada e antes de a implementação começar. O time traz o briefing, registra perguntas abertas, transforma respostas em regras, define critérios de aceite e mantém tudo em uma spec que pode ser conectada ao repositório e usada por agentes de código sem depender da memória de uma reunião.

Esse é o ponto em que a ferramenta deixa de ser uma promessa abstrata e vira parte do fluxo de trabalho: se a empresa já usa Cursor, Claude, Codex, OpenCode ou qualquer outro agente, o risco não está em faltar geração de código. O risco está em entregar ao agente uma decisão incompleta. O teoai existe para reduzir esse risco sem tirar de produto, segurança ou engenharia a autoridade de decidir.

Por que esse contrato é importante para a empresa

Em uma empresa, a mesma decisão costuma atravessar produto, arquitetura, segurança, dados e várias equipes de entrega. Uma especificação compartilhada reduz a perda de contexto entre esses grupos sem fingir que todos precisam trabalhar no mesmo repositório ou com o mesmo nível de detalhe. Ela deixa claro quem decidiu, qual risco foi aceito e que evidência ainda falta.

O valor fica mais evidente quando uma mudança afeta mais de um sistema. O objetivo de negócio pode continuar o mesmo enquanto a solução técnica muda: uma integração pode ser substituída, um serviço pode ser dividido ou uma migração pode ganhar uma etapa intermediária. A especificação preserva a intenção e permite revisar a estratégia sem recontar toda a história do porquê.

Isso também melhora a continuidade do trabalho. Se alguém deixa o projeto, uma auditoria pergunta de onde veio uma regra ou outra equipe assume a manutenção, o contrato é uma referência mais confiável do que um conjunto de mensagens espalhadas. A governança deixa de ser apenas uma aprovação no fim e passa a acompanhar a decisão desde o primeiro rascunho relevante.

  • Uma decisão de negócio rastreável até os cenários, critérios e implementação
  • Responsáveis e revisores definidos conforme o risco, não por uma cerimônia fixa
  • Dependências entre repositórios e equipes registradas antes da execução
  • Mudanças na estratégia separadas de mudanças na intenção original
  • Evidências suficientes para operação, segurança e auditoria
Rastreabilidade entre intenção e implementação A intenção é conectada a cenários, evidências e implementação, com espaço para revisão. Rastreabilidade entre intenção e implementação A intenção é conectada a cenários, evidências e implementação, com espaço para revisão. cenáriosevidênciaimplementaçãointenção
A mesma decisão pode atravessar equipes sem perder o vínculo entre intenção, evidência e implementação.

O que muda para quem desenvolve

Para quem desenvolve, spec-driven development não significa receber um documento maior para seguir como receita. Significa começar com uma tarefa cujo propósito, limite e condição de término estão explícitos. Quem desenvolve continua investigando o código, escolhendo abstrações e negociando trade-offs; só não precisa adivinhar regras que deveriam ter sido decididas antes.

Em uma funcionalidade que atravessa front-end, API e persistência, a especificação pode descrever o comportamento para quem usa o produto e dividir o trabalho em unidades com contratos claros. Cada repositório recebe seu recorte, suas dependências e sua forma de verificação. O agente ajuda a explorar padrões locais e preparar mudanças; a revisão confirma se esse recorte continua fiel ao contrato maior.

O ciclo encurta quando cada falha volta para o lugar certo. Se o código não atende a um critério explícito, é preciso melhorar a implementação ou a validação. Se o critério não capturou uma regra de negócio, a especificação deve ser atualizada antes de pedir uma nova geração. Uma ferramenta como o teoai ajuda justamente nesse ponto: a correção volta para a spec, não fica perdida em um comentário de pull request.

  • Ler o contexto de negócio antes de abrir uma sequência de arquivos de implementação
  • Confirmar contratos de integração e casos de erro antes de codificar
  • Usar o agente para explorar e propor, sem transferir a ele a autoridade da decisão
  • Validar cada unidade com testes, inspeção e evidências do cenário real
  • Devolver lacunas de intenção ao contrato, em vez de escondê-las em comentários locais

Limitações e quando não usar

Uma especificação não resolve uma decisão que ainda não tem dono. Se produto, engenharia e segurança discordam do resultado, formalizar a ambiguidade só produz um documento bem escrito com um risco ainda sem solução. Primeiro, é preciso conversar para decidir prioridade, política e responsabilidade.

Também não faz sentido criar um ritual pesado para toda alteração. Um ajuste reversível de texto, uma correção mecânica conhecida ou uma mudança isolada pode seguir o fluxo normal de revisão. O rigor deve acompanhar impacto, incerteza e custo de reversão, não uma meta arbitrária de páginas.

Em sistemas legados, tentar descrever tudo antes de mexer em qualquer coisa costuma criar um inventário impossível de revisar. É mais seguro começar pela área afetada, registrar o comportamento observado e ampliar a cobertura à medida que bugs, funcionalidades e refatorações revelam novas regras. A especificação só é útil se continuar revisável.

  • Não substitui testes, observabilidade, revisão de segurança nem julgamento humano
  • Não deve congelar uma solução técnica quando o problema ainda está sendo descoberto
  • Não justifica copiar contexto irrelevante de todos os repositórios
  • Perde valor se for abandonada depois do primeiro deploy

Perguntas e respostas

Pergunta: a especificação precisa estar escrita antes de qualquer conversa com um agente? Resposta: não. A conversa pode ajudar a descobrir lacunas e alternativas. O ponto de controle é consolidar e revisar as decisões relevantes antes da execução autônoma.

Pergunta: quem é responsável pela especificação quando a mudança atravessa equipes? Resposta: a pessoa responsável pelo resultado coordena a intenção, enquanto cada disciplina responde pelo seu recorte de risco. Uma matriz simples de responsáveis e revisores evita que o documento vire propriedade exclusiva da engenharia.

Pergunta: como saber se a especificação ficou vaga demais ou detalhada demais? Resposta: peça a alguém que não participou da conversa para explicar o comportamento, os limites e as evidências de aceite. Se ainda precisar adivinhar a regra, falta clareza; se precisar ler uma implementação disfarçada, há detalhe demais.

Fontes e leituras

  1. InfoQ — Spec-Driven Development: Adoption at Enterprise Scale
  2. Microsoft for Developers — Diving Into Spec-Driven Development With GitHub Spec Kit
  3. GitHub — Spec Kit
  4. Thoughtworks — What is spec-driven development?

O próximo gargalo não precisa virar prompt perdido.

Entre na lista do teoai para transformar briefing, revisão e agente de código em um mesmo fluxo de spec viva.

Entrar na lista de espera