chimera-thin-vertical-slice
Construa um caminho estreito que atravesse todas as camadas e rode, antes de construir qualquer camada por inteiro — uma integração que nunca executou é um chute.
Conferida por quem revisou e leu o cartão, não reivindicada pelo próprio arquivo. Um cartão que o agente destila durante uma execução que consumiu conteúdo não confiável nasce contaminado e fica retido para revisão antes de alguma vez ser recuperado.
Quando ele vem à mente
- começando uma feature nova
- isso precisa de CLI, serviço e armazenamento
- construindo a abstração primeiro
- nada roda ainda
- montando o esqueleto de um subsistema
Evite e Verifique são onde costuma estar o valor. Faça é a seção que todo mundo escreve.
O corpo do cartão acima é uma tradução. O original em inglês é o que a CLI importa, o que o agente lê em execução e o que o hash abaixo atesta.
Gatilho
Você está começando um trabalho que atravessa camadas — um comando que alcança um orquestrador que chama um provider que escreve num store — e está decidindo o que construir primeiro. A tentação é construir a camada de baixo por completo, depois a seguinte, e ligar tudo no final.
Não se aplica a trabalho que é genuinamente de uma camada só: um parser, um formatador, uma função pura. Não há vertical ali, e inventar uma é cerimônia. Também não se aplica a uma mudança dentro de um sistema que já roda ponta a ponta; esse caminho existe, e a fatia já foi paga.
Faça
- Nomeie o observável que a fatia vai produzir, como um comando que outra pessoa poderia digitar e
uma única saída concreta. Não "o pipeline funciona" —
chimera run "hi"imprime uma linha que voltou de um provider real. - Escreva essa invocação primeiro, como script ou como teste, e observe-a falhar pelo motivo certo.
- Implemente o caminho mais curto atravessando todas as camadas, degenerado em cada uma: um provider, sem retry, sem arquivo de config, sem cache, sem concorrência. Onde uma política vai morar um dia, ponha uma constante.
- Mantenha real a camada que carrega a incógnita de verdade. Se você ainda não sabe o que o provider retorna, o provider é a única coisa na fatia um que não pode ser um stub.
- Faça commit no momento em que aquilo roda, antes de generalizar. Esse commit é a evidência de que as camadas se encaixam.
- Amplie um eixo por vez — segundo provider, depois configuração, depois cache — e mantenha o comando do passo 1 funcionando depois de cada ampliação. Se ele quebrar, aquela ampliação é a suspeita.
Evite
Projetar uma interface sem nenhum chamador. A ordem horizontal produz uma classe base, seis adaptadores, um registry e uma política de retry no primeiro dia, e descobre na hora de ligar tudo que o formato está errado — porque nada ainda tinha feito a ela uma pergunta real.
class BaseProvider(ABC): ...
class ProviderRegistry: ...
class RetryPolicy: ...
# Day 1, vertical: ugly, hardcoded, and it answers the question.
def complete(prompt: str) -> str:
return _post(URL, {"model": MODEL, "prompt": prompt})["choices"][0]["text"]
Evite também a fatia que é fina na dimensão errada: mockar a chamada externa e rodar todo o resto ponta a ponta. Isso prova que as suas próprias camadas concordam entre si, que nunca foi a parte duvidosa. A integração que você não exercitou é a integração que vai estar errada.
Verifique
Faça uma pergunta binária: alguém que não escreveu aquilo, num checkout limpo, consegue rodar um comando e ver a feature fazer o trabalho dela do começo ao fim? Se a resposta precisar de "bom, depois que você também stubar X" ou "depois de colar um token naquela constante" — anote a segunda honestamente como setup, e trate qualquer ressalva de código como prova de que ainda não é uma fatia.
Depois olhe o git log: existe um commit em que o comando funcionava e as abstrações ainda não
existiam? Se o primeiro commit funcional é também o commit que introduziu o registry, a fatia foi
pulada.
Risco
Uma fatia fixa escolhas no código, e escolhas fixadas sobrevivem. A falha usual é que os passos 5 e 6 nunca acontecem porque a primeira fatia "funciona", deixando um sistema cujo provider único está soldado e cujas costuras foram parar onde deu na segunda hora. Programe a ampliação como trabalho no mesmo lote, não como um follow-up que ninguém financia.
O outro custo é real: conduzir a fatia um por uma dependência externa ao vivo torna esse primeiro teste lento, pago, e ocasionalmente instável. Grave e reproduza (record and replay) depois que ele existir — gravar uma chamada que você nunca fez não é possível, que é a razão inteira de a ordem importar.
Como usar
O cartão é dado. Clone o repositório e importe pelo caminho — o que chega pela rede é tratado como contaminado e fica retido para aprovação, que é o comportamento desejável e a razão de não haver um instalador de uma linha aqui.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/chimera-thin-vertical-slice/SKILL.mdIntegridade
SHA-256 do arquivo como publicado. Quem importa pode conferir que o que recebeu é o que esta página mostrou.
cc2b4e8524f6a9a839d70effa69a32287a69eb70dba16321bffb74ae39c302e6