Ir para o conteúdo

Skills

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.

PadrãoProcedência: cleanEstado: activev0.1.0 · Apache-2.0

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

  1. 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.
  2. Escreva essa invocação primeiro, como script ou como teste, e observe-a falhar pelo motivo certo.
  3. 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.
  4. 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.
  5. Faça commit no momento em que aquilo roda, antes de generalizar. Esse commit é a evidência de que as camadas se encaixam.
  6. 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.git
chimera skills-import chimera-agent/skills/chimera-thin-vertical-slice/SKILL.md

Integridade

SHA-256 do arquivo como publicado. Quem importa pode conferir que o que recebeu é o que esta página mostrou.

cc2b4e8524f6a9a839d70effa69a32287a69eb70dba16321bffb74ae39c302e6

Leia o cartão no repositório