Feature grande demais para uma spec só? Como dividir em specs menores

Dividir spec em specs menores é cortar a feature na vertical: cada fatia atravessa UI, back-end e banco e entrega algo demonstrável sozinha, mesmo cobrindo um caso só. Cortar por camada (spec do banco, spec da API, spec da tela) fere independência e valor do guia INVEST, então foge disso. Use o catálogo SPIDR (spike, path, interface, data, rules) pra achar os cortes e valide cada um com a pergunta: o usuário se beneficiaria se só esta fatia fosse entregue? Depois materialize uma spec por fatia, em diretório próprio, e confira cada uma antes de virar tarefa
Fala aí, beleza? Você sentou pra descrever uma feature na spec e ela foi crescendo sozinha
Requisito puxa requisito, caso de borda puxa caso de borda, e no fim o documento parece um mini PRD da empresa inteira
Aí você manda o agente implementar
Ele entrega uma parte bonita, improvisa outra, esquece uma regra que estava lá no meio do texto e você descobre isso só no teste
Se liga nisso: o problema quase nunca é a feature ser grande
O problema é a spec tentar ser ÚNICA
Neste post eu te mostro o critério de corte (por onde a linha passa de verdade), o contexto mínimo que cada fatia precisa carregar pra não depender das vizinhas e a ordem em que essas specs entram na implementação
Bora ver na prática? 🙂
O que você precisa antes de fatiar a spec
Antes de sair criando arquivo, junta três coisas
1) A feature descrita ponta a ponta, mesmo bagunçada
Pode ser um texto corrido, um monte de bullet solto, print de conversa com o cliente
O objetivo aqui não é organizar, é enxergar o tamanho real do bicho
2) Um agente de código que trabalhe com spec
Pode ser o Claude Code no modo de planejamento: Shift+Tab cicla entre os modos de permissão (default, acceptEdits e plan) e dá pra prefixar o prompt com /plan
No plan mode o Claude pesquisa e propõe as mudanças sem aplicar nada, o que é exatamente o que tu quer numa fase de recorte
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 114 aulas
- 4 projetos
- 9h 18min
Podem ser também as ferramentas dedicadas a spec, tipo o GitHub Spec Kit ou o Kiro
3) O repositório onde as specs vão morar
O Kiro recomenda guardar as specs no próprio repo do projeto, junto do código que elas descrevem, mantendo a ligação entre requisito e implementação
Faz sentido: spec versionada fora do repo vira documento morto em três semanas
E agora o aviso mais importante da seção: o fatiamento é decisão humana antes de virar arquivo
Nem o Spec Kit nem o Kiro documentam um comando de "quebra essa spec em quatro pra mim"
A divisão acontece você criando specs novas, com a cabeça, e a ferramenta só materializa o que tu decidiu
Passo a passo: dividir uma feature grande em specs independentes
- Escreva a feature inteira em uma folha só, de propósito. Sem organizar, sem numerar bonito, só despejar tudo que ela precisa fazer. É o raio-x: se você não consegue ler o escopo inteiro sem rolar a tela três vezes, já sabe que vem corte por aí… Erro comum deste passo: começar a estruturar antes de terminar de despejar, porque aí você fatia com base no que lembrou primeiro, não no todo
- Liste os caminhos de uso e as regras, não as telas e tabelas. Aqui entra o SPIDR como catálogo de cortes: spike, path, interface, data, rules. Pergunta "quais caminhos o usuário percorre?" e "quais regras mudam o resultado?" em vez de "quais telas eu vou precisar?". Erro comum deste passo: listar entidades do banco e achar que aquilo é o escopo, quando é só o desenho técnico de uma parte dele
- Corte na vertical. Fatia vertical é a que toca um pouco de cada camada e funciona ponta a ponta, mesmo cobrindo um caso só. Fatia horizontal separa UI, back-end e banco em itens distintos, e é justamente o que quebra tudo. Erro comum deste passo: criar "spec do banco", "spec da API" e "spec da tela". Divisão por camada fere as propriedades de independência e valor do INVEST: nenhum daqueles pedaços vale nada sozinho, e todos precisam esperar os outros pra existir
- Aplique o teste do corte, fatia por fatia. A pergunta é uma só: o usuário se beneficiaria se APENAS esta fatia fosse entregue? Se a resposta for não, o pedaço não é uma fatia, é meia fatia, e você funde com a vizinha. Erro comum deste passo: aceitar um "sim, mas depois que a próxima estiver pronta". Esse "mas" é um não 😛
- Defina o contexto mínimo que cada spec carrega. Três coisas escritas explicitamente: o contrato que ela assume pronto, o dado que ela cria pras outras e o que fica de fora. É isso que impede a spec 002 de precisar reler a 001 inteira pra fazer sentido. Erro comum deste passo: colar o projeto inteiro dentro de cada spec "pra garantir"
- Ordene a implementação por dependência de dado e por risco. A fatia que CRIA o dado vem antes da que consome, sempre. E quando a viabilidade técnica é dúvida, o spike do SPIDR vai na frente de tudo, porque o resultado dele pode mudar o desenho das outras fatias. Erro comum deste passo: ordenar por camada de novo, de trás pra frente, começando pelo "vamos deixar o banco pronto primeiro"
Sobre o passo 5, vale uma parada pra explicar o PORQUÊ
A Anthropic trata contexto como recurso finito, com retorno marginal decrescente: o modelo tem um "orçamento de atenção" que vai sendo consumido conforme processa grandes volumes, e a curadoria do que entra é um trabalho iterativo
Ou seja: enfiar tudo na spec não é generosidade com o agente, é gastar o orçamento dele com coisa que não é do problema atual
A capacidade de achar agulha no palheiro melhorou muito, se liga: na variante 8-needle de 1M do MRCR v2, o Claude Opus 4.6 marca 76% contra 18,5% do Sonnet 4.5
Mas "consegue recuperar" é diferente de "vale a pena fazer ele procurar"
Spec curta continua ganhando, e essa mesma lógica vale quando você precisa dividir uma tarefa grande no Claude Code sem perder o fio no meio
Seguindo:
- Materialize uma spec por fatia, em diretório próprio. No Spec Kit a numeração varre as specs existentes e gera a próxima (001, 002, 003…), criando a estrutura
specs/<branch-name>/com os documentos daquela feature. No Kiro, uma spec são três arquivos gravados em.kiro/specs/:requirements.md(histórias de usuário e critérios de aceite),design.md(arquitetura técnica) etasks.md(plano de implementação em tarefas rastreáveis). Erro comum deste passo: pendurar a fatia nova como apêndice da spec antiga - Confira cada spec ANTES de quebrar em tarefas. No Spec Kit,
/speckit.checklistgera uma checklist de qualidade pra ver se a spec está completa, clara e consistente, descrita na doc como "testes unitários dos seus requisitos". Já/speckit.analyzecomparaspec.md,plan.mdetasks.mde aponta conflito, lacuna e ambiguidade. Erro comum deste passo: rodar o analyze e esperar conserto. Ele é read-only: aponta o problema, quem corrige é você
Se você for de Spec Kit, o bootstrap do projeto sai pela CLI Python chamada Specify:
uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME>
E o fluxo de comandos que o agente roda passo a passo é esta sequência: constitution, specify, clarify, plan, checklist, tasks, analyze, implement e converge
Repara que checklist e analyze estão ali no meio de propósito, antes e depois das tasks
O Spec Kit tem uma página de integrações suportadas com os agentes de código compatíveis, e o Claude Code está entre eles
Três recortes que quase sempre funcionam
Feature cheia de regra de negócio
É o clássico: cálculo de comissão, desconto progressivo, elegibilidade, aquelas coisas com dez exceções
Aqui o corte é pelo rules do SPIDR
Primeira spec: o caso feliz funcionando ponta a ponta, do clique até o dado gravado, com UMA regra só
As exceções viram specs seguintes, uma por bloco de regra
Cada uma passa no teste do corte sozinha, porque o usuário já consegue usar o caminho principal enquanto as bordas não chegaram
Feature com dúvida técnica no meio
Aquela em que você não sabe se a integração aguenta, se o formato bate, se dá pra fazer no tempo do request
Corte pelo spike: primeiro a fatia que responde a dúvida, depois o resto
No Kiro dá pra encaixar isso no fluxo: as Feature Specs suportam dois pontos de partida, Requirements-First e Design-First, e o Design-First pode ser usado justamente pra validar viabilidade técnica antes de abrir uma spec Requirements-First completa
O Kiro também tem tipos de spec além da feature nova: spec de correção de bug e spec design-first pra construir sobre aplicação existente
E se você não quer os portões de aprovação entre as fases, tem o Quick Spec, que entrega os mesmos artefatos (requirements, design e tasks) sem os approval gates e faz perguntas sobre escopo, restrições e casos de borda antes de escrever
Feature que atravessa projetos de um monorepo
Essa dói porque parece uma feature só, mas mora em dois ou três lugares
O Spec Kit permite vários projetos independentes sob a mesma raiz, cada um com seu próprio conjunto de specs
Então o corte natural é por projeto: uma spec por projeto tocado, cada uma declarando o contrato que assume pronto do vizinho
O que NÃO vale é fazer uma spec gigante na raiz descrevendo o mundo, e depois torcer pro agente adivinhar onde cada parte cai
Sinais de que a spec ficou grande demais
Os sintomas são bem reconhecíveis, olha só
| Sintoma | Causa provável | Correção |
|---|---|---|
| O agente entrega metade e improvisa a outra | Escopo grande demais pro orçamento de atenção, com requisito enterrado no meio do texto | Corta mais uma fatia vertical e leva o excedente pra spec nova |
| Tem requisito que ninguém consegue aceitar isoladamente | Corte horizontal disfarçado (camada virando item) | Refaz o corte por caminho de uso ou por regra, aplicando o teste do corte |
| Toda mudança de escopo obriga a reescrever o documento inteiro | Fatias acopladas, sem contexto mínimo declarado | Escreve em cada spec o contrato que ela assume, o dado que ela cria e o que fica de fora |
| A checklist aponta ambiguidade em bloco | Spec cobrindo assuntos demais pra ser clara em todos | Separa por assunto e roda a checklist de novo em cada uma |
| O analyze acusa conflito entre spec, plan e tasks | Um documento evoluiu e os outros ficaram pra trás | Resolve o conflito na mão (o analyze é read-only) e considera que ali tem duas features, não uma |
A correção recorrente é sempre a mesma: cortar mais uma fatia vertical e mover o excedente pra uma NOVA spec, em um novo diretório
No Spec Kit isso é explícito: mudança de acompanhamento substancial ou feature nova vira spec nova, cada uma ocupando seu próprio diretório numerado sob specs/
Não é apêndice na spec antiga, beleza?
E pra prevenir, três hábitos que custam pouco:
- rodar a checklist ANTES de gerar as tasks, não depois
- tratar toda mudança substancial como spec nova
- manter a spec curta porque o orçamento de atenção do modelo é finito, ponto
Uma dica de bastidor: quando o agente propõe um plano no Claude Code, você não precisa aceitar como veio
Ctrl+G abre o plano proposto no editor de texto padrão pra você editar antes de aprovar
É o momento perfeito pra riscar o que é de outra fatia 😀
Depois de aprovar, a sessão sai do plan mode e vai pro modo de permissão da opção escolhida, e o Claude começa a editar
Quer voltar a planejar? Shift+Tab de novo e tu está no plan mode
Pra começar do zero com feature grande e organização de trabalho no Claude Code, este vídeo do canal mostra o GStack transformando o Claude Code numa equipe de especialistas:
Comece pela fatia que entrega valor sozinha
Se você guardar uma coisa só deste post, guarda o critério: vertical, com valor demonstrável, aprovado no teste do corte
O resto (numeração, diretório, comando, ferramenta) é consequência
O próximo passo é bem concreto
Pega a feature que está travada hoje
Lista os caminhos de uso e as regras dela, sem olhar pra telas nem pra tabelas
Corta a primeira fatia que sobrevive à pergunta "o usuário se beneficiaria se só isso fosse entregue?"
Abre SÓ ela como spec, roda a checklist, quebra em tarefas e implementa
O resto fica anotado num rascunho, esperando virar spec própria depois
É menos documento, mais entrega, e um agente que não se perde no meio do caminho
Bora fatiar? até o próximo post! 🙂
Perguntas frequentes
Existe um comando que divide a spec automaticamente em partes menores?
Não. Nem o Spec Kit nem o Kiro documentam um comando de "quebra essa spec em quatro pra mim". A divisão é decisão humana, feita antes de virar arquivo: você decide o corte e a ferramenta só materializa cada fatia em uma spec própria.
Por que separar a spec em camadas (banco, API, tela) é uma divisão ruim?
Porque isso é fatiamento horizontal, e ele fere as propriedades de independência e valor do guia INVEST: nenhum desses pedaços entrega nada sozinho. O corte que funciona é o vertical, que toca um pouco de cada camada e resulta em algo demonstrável mesmo cobrindo só um caso de uso.
Qual pergunta usar para testar se o corte da spec está certo?
Uma só, vinda do conjunto de padrões SPIDR (spike, path, interface, data, rules): o usuário se beneficiaria se apenas esta fatia fosse entregue? Se a resposta for não, ou vier com um "sim, mas depois que a próxima estiver pronta", aquilo é meia fatia e deve ser fundida com a vizinha.
Para que serve o /speckit.checklist antes de quebrar a spec em tarefas?
Ele confere se a spec está completa, clara e consistente antes de você gerar as tasks, funcionando como os "testes unitários dos seus requisitos", como descrito na própria documentação do Spec Kit. Faz sentido rodar esse comando em cada fatia separada, já que cada uma virou uma spec independente.
O que o /speckit.analyze verifica depois que a feature virou várias specs?
É um comando somente leitura que compara spec.md, plan.md e tasks.md e aponta conflitos, lacunas e ambiguidades entre esses artefatos. Ele não corrige nada sozinho, só sinaliza o problema para você ajustar.
Dá para ter várias specs de projetos diferentes num mesmo monorepo?
Sim, o Spec Kit permite vários projetos independentes sob a mesma raiz, cada um com seu próprio conjunto de specs. Por isso, numa feature que atravessa o monorepo, o corte natural é por projeto: uma spec por projeto tocado, cada uma declarando o contrato que assume pronto do vizinho.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
A spec substitui o README e a documentação do projeto?
Spec vs documentação não é escolha: veja a diferença entre planejar uma feature (spec) e documentar como o sistema funciona hoje, e quando migrar pra lá.
O que é SDD (spec-driven development) e como funciona na prática?
SDD (spec-driven development): escreva a spec antes do código e use-a como fonte única de verdade. Veja o ciclo prático com Spec Kit, Claude Code e Kiro.
Como criar uma skill de spec-driven development para reusar em todos os projetos
Uma skill de spec-driven development guarda seu processo de spec no SKILL.md: instale global (~/.claude/skills/) ou só no projeto e reutilize sempre.
