Método SDLC — Fábrica de software com agentes

Meu jeito de construir sistema com o Claude Code, todo dia. Cada estágio grava um artefato que o próximo lê. Eu só entro nos pontos de julgamento; o time de agents faz o resto sozinho.

⚖️
DISCIPLINA > INTUIÇÃO. Nada de vibe coding. Nenhuma linha de código antes do caminho abaixo. Se pulei uma etapa, parei cedo demais.
intent aprovado → plano aprovado → teste RED → código GREEN → review → e2e → PR → merge

▶ Arranque rápido — o que eu faço todo dia

Projeto já adotado (fiz /sdlc:adopt nele uma vez). Isto é o começo de toda demanda nova:

cd <meu-projeto> claude /sdlc:up

Depois, na aba do planner, escrevo a demanda em português como falaria com um colega. A partir daí só respondo os 3 gates (intent, plano, merge). Detalhe completo em Fluxo da demanda.

Antes de tudo (uma vez): confira que o Claude Code está ≥ 2.1.234. Hoje aqui está 2.1.220 — atualize o app antes de rodar o método, senão o /sdlc:setup vai acusar FALTA.

1 Configurar a máquina uma vez por PC

Pré-requisitos que o Claude Code não instala sozinho: Git (no Windows vem com o Git Bash), jq, GitHub CLI já logado (gh auth login) e Claude Code ≥ 2.1.234.

claude plugin marketplace add mbkautomacoes/sdlc-main && claude plugin install sdlc@sdlc claude /sdlc:setup
O que fazCheca git, jq, gh e a versão do Claude Code; instala claude-agent-kit (o time) e mattpocock-skills; garante o code-craftsman (gate de qualidade); grava a persona global em ~/.claude/CLAUDE.md (com backup do meu). Imprime uma tabela ok/FALTA.
QuandoUma vez por máquina. Pode rodar de novo a qualquer hora só pra conferir — é idempotente.
DepoisFeche e reabra o claude: plugins e CLAUDE.md global só carregam no início da sessão.
As 3 ferramentas já estão no meu GitHub e instaladas: sdlc-main, claude-agent-kit-master, code-craftsman. Numa máquina nova, os 3 passos acima refazem tudo.

2 Cadastrar modelos 1x por modelo que não é Claude

Opcional. Serve para rodar o dev num modelo barato e deixar planner/reviewer no Claude — corta muito custo de um time rodando horas. Se eu só uso Claude, pulo isto.

/sdlc:models
O que fazPergunta o provedor (deepseek kimi-k3 glm qwen minimax), o modelo de cada slot e a chave. Grava ~/.claude-kit/profiles.json e ~/.claude-kit/secrets.env. A chave nunca aparece no chat.
QuandoAntes do primeiro /sdlc:adopt que use aquele modelo. Uma vez por provedor.
Backup: ~/.claude-kit/secrets.env é o único lugar das chaves. Nenhum comando recria sem eu digitar tudo de novo. Faça backup desse arquivo.

3 Adotar o método no projeto 1x por repositório

cd <projeto> claude /sdlc:adopt
O que fazCopia os artefatos do método (REVIEW.md, intent/, specs/, evals/, docs/bugs.json, .claude/sdlc/) sem sobrescrever nada; detecta a branch base; pergunta o modelo de cada papel e grava .claude/sdlc/team.json; funde CLAUDE.md e .claude/settings.json existentes mostrando o diff antes.
Por quêOs agents leem contrato de arquivo, não conversa: CLAUDE.md diz como buildar e testar, REVIEW.md diz o que o reviewer cobra, team.json diz quem roda em qual modelo e para onde vai a PR (pr_base).
DepoisSe o diff do CLAUDE.md mostrou <placeholder>, preencho (comandos de build/test/lint com a saída saudável). Commito os arquivos novos numa branch chore/sdlc.
Repo onde main é produção? O adopt oferece pr_base: dev pra PR não bater contra produção. Trocar papel depois sem editar arquivo: /sdlc:adopt --reviewer claude.

◆ Fluxo da demanda — o coração do método

Depois do /sdlc:up, na aba do planner, descrevo a demanda. A sequência é sempre a mesma:

PassoQuemO que aconteceEu
Intentplanner /sdlc:intentMe entrevista e grava intent/<slug>.mdaprovo ✔ ou corrijo
Planoplanner planf3 + code-craftsmanEscreve specs/<slug>.html e escolhe o tipo: hotfix, feature ou review-onlyaprovo ✔ (libera push da branch + PR)
Pipelineplanner /sdlc:teamInicia pipeline.json, manda o kickoff ao dev e dormesaio
Build→review→e2e→PR→docdev reviewer tester-e2e documentCada um fecha seu estágio com /sdlc:next e passa o bastão. Achado dentro da spec volta ao dev sozinho (até 3x)nada
Doneplanner /entregaRubrica com evidência de cada gate; PR abertaleio, decido o merge
Só me chamam no meio em 2 casos: (1) bug fora do escopo da spec — o planner pede aprovação antes de mandar corrigir; (2) estado terminal blocked, exhausted ou thrash — o planner explica em 1 linha.

6 Os 6 estágios

#EstágioArtefatoQuemGate meu
1Planintent/<slug>.md (entrevista)originador + planneraprovo intent
2Design + planospecs/<slug>.html (planf3) + gate code-craftsmanplanneraprovo plano
3Builddiff em worktree, TDD, rubrica com evidênciadev—
4Testveredito do reviewer + achados do tester-e2ereviewer, tester-e2esó bug fora do escopo
5DeployPR + rubrica /entregadev, reviewer, document, plannermerge
6Maintain/sdlc:ops vigia CI e PRs, escreve intents novosops (opcional)trio a fila
dev ─pass→ reviewer ─pass→ tester-e2e ─pass→ dev(PR) ─pass→ reviewer(PR) ─pass→ document → done → /entrega ▲ │fail │fail │fail └───────────┴─────────────────┴──────────────────────────────────┘ ≤ 3 retries, senão o planner me chama

Estado vive em specs/<slug>/pipeline.json. Skill é conselho; hook é lei: test-lock, protected-paths, prod-gate.

★ Quem é quem

planner

Planeja e orquestra, nunca implementa. Entrevista → intent → plano (planf3) → dispara o time → conduz até o fim. É quem fala comigo. Claude.

dev

Implementa exatamente a spec via TDD (RED→GREEN→REFACTOR), num worktree isolado. Não re-planeja nem inventa requisito. Modelo barato.

reviewer

Confere conformidade com a spec (não testa): quebra o plano em requisitos e julga cada um contra o código com arquivo:linha. Barra o dev. Claude.

tester-e2e

Valida no app rodando de verdade (Chrome DevTools/Playwright): golden path + edge cases. Reporta bug, não conserta. Barato.

document

Escreve o que foi entregue a partir da evidência (diff, rubrica, testes). Atualiza docs. Não toca no código. Barato.

🔨 code-craftsman

Skill always-on de qualidade. Gate do plano (scope creep + cobertura TDD) e enforcement por hooks: bloqueia vibe coding, over-engineering, código sem teste. Ver Regras inegociáveis.

✋ Onde EU decido (gates humanos)

Fora destes pontos, o planner conduz sozinho. Eu aprovo artefato em fronteira de estágio, não cada saída.

GateQuandoO que eu faço
G1intent.md escritoConfirmo que o problema está certo antes de planejar
G2plano planf3 escrito e interrogadoAprovo o plano — isso autoriza push da branch e PR
G3PR aberto com rubricaLeio a rubrica e decido o merge
G-bugbug fora do escopo achado em review/e2eAprovo (ou não) o fix antes do dev implementar

↻ Próxima demanda no mesmo projeto

O time fica aberto entre demandas; só o dev muda (nasce num worktree por slug).

1. demanda anterior em done e PR mergeada por mim 2. feche a aba dev-<projeto>-<slug-antigo> 3. na aba do planner: /clear 4. /sdlc:up <novo-slug> 5. na aba do planner: descrevo a demanda nova
/clear apaga a conversa, não a sessão. Nunca dê /clear no dev ou reviewer no meio de um estágio — o trabalho deles só existe na conversa. Plugin atualizado exige fechar e reabrir a aba (/clear não carrega versão nova).

⌘ Referência rápida de comandos

ComandoQuem rodaPara quê
/sdlc:setupeu, 1x por máquinainstalar e conferir o ambiente
/sdlc:modelseu, 1x por modelocadastrar provedor e chave
/sdlc:adopteu, 1x por repopreparar o projeto e o team.json
/sdlc:upeu, por demandaabrir o time
/sdlc:intentplannerentrevista → intent/<slug>.md
/sdlc:teamplanneriniciar o pipeline com o time
/sdlc:nextcada agentfechar o estágio e passar o bastão
/entregaplannerrubrica final com evidência
/sdlc:paineleu, quando quiserver quem está rodando, pipelines, tokens e custo
/sdlc:opssessão ops (opcional)vigiar CI e PRs, escrever intents novos
/code-craftsman:on|off|pause|statuseuligar/desligar o gate de qualidade na sessão
Atualizar as ferramentas: claude plugin update sdlc && claude plugin update claude-agent-kit (só baixa quando a versão sobe). O code-craftsman atualiza com git -C ~/.claude/skills/code-craftsman pull.

◈ Qual modelo em qual papel

Regra que funciona: planner e reviewer em Claude, dev no modelo barato.

PapelRecomendadoPor quê
plannerClaudeentrevista, plano, supervisão: é julgamento, e é quem fala comigo
reviewerClaudeé quem barra o dev; modelo fraco aqui aprova código fraco
devDeepSeek, GLM, Qwen, Kimi…volume de código; o reviewer pega o que ele errar
tester-e2ebaratoexecuta fluxos e reporta; pouca decisão
documentbaratoescreve a partir do diff; pouca decisão

🔨 Regras inegociáveis (code-craftsman)

O que a skill de qualidade força em toda interação. É o "porquê" da disciplina.

TDD não-negociável

RED → GREEN → REFACTOR. Teste falhando primeiro. Sem teste antes do código → bloqueado por hook. Cobertura ≥80% no que mudou; mutação ≥70%.

Simplicidade (YAGNI)

Mínimo que resolve. Nada especulativo. Sem abstração de uso único, sem IRepository com 1 implementação, sem UseCase pra CRUD. Flat first.

Mudança cirúrgica

Toco só no que preciso. Não "melhoro" código adjacente. Cada linha alterada rastreia até o pedido.

Anti-preguiça de LLM

Sem "exemplo genérico, adapte", sem pseudocódigo, sem TODO, sem catch(e){throw e}. Resposta compila + passa lint + tem teste na 1ª tentativa.

Nomes

Proibido Manager/Processor/Handler/Util/Helper sem domínio, prefixo I em interface. Classe = substantivo, método = verbo.

Limites

Função ≤20 linhas, ≤2 params, ≤2 níveis de indentação. Arquivo ≤500 linhas. Commit subject ≤50 chars.

Saída em modo caveman (comprimida) por padrão. Comentário só quando o "porquê" não é óbvio. Decisão não-óbvia vira ADR em docs/adr/.

⚠ Se travar

SintomaCausaSaída
Aba em "Is this a project you trust?"pasta nova sem confiança/sdlc:up já pré-aprova; à mão, escolha "Yes" uma vez
401 Authentication Failed na aba do devchave errada/trocadacorrija com /sdlc:models <id>, feche a aba, relance o papel (abaixo)
SendMessage pede [ref]duas sessões com o mesmo nomeum nome por papel; feche as antigas
hooks não disparamfalta jq ou Git Bashjq --version
update diz "última versão" mas falta arquivoversão não subiuclaude plugin uninstall sdlc@sdlc && claude plugin install sdlc@sdlc

Relançar só um agente que caiu (o pipeline não perde nada — estado está no pipeline.json + worktree):

1. corrija a causa (se for chave): /sdlc:models <id> 2. feche a aba do agente com problema 3. /sdlc:up <slug> --roles dev # só o papel que caiu 4. na aba do planner: "dev relançado, reenvie o kickoff do estágio <estágio>"

✅ Checklist — antes de começar a codar

Bato o olho aqui toda vez. (As marcações ficam salvas neste navegador.)