CommunityEscrita e Ediçãogithub.com

cgandini/agentic-skills (Habilidades de Agentes)

Padrão de orquestração para agentes de IA de codificação — mantenha o julgamento no modelo mais forte, delegue todo o resto por padrão para modelos mais baratos por meio de briefs autocontidos. Funciona no Claude Code, Antigravity e ChatGPT/Codex.

O que é agentic-skills (Habilidades de Agentes)?

Este skill implementa um padrão de orquestração para agentes de IA de codificação, onde o modelo mais caro (TIER_JUDGMENT) é usado exclusivamente para julgamento, arquitetura e escrita de briefs, enquanto tarefas de execução (escrita de código, refatoração, pesquisas) são delegadas automaticamente para modelos mais baratos (TIER_WORKER e TIER_LOOKUP). O skill suporta múltiplas plataformas como Claude Code, Antigravity e ChatGPT/Codex, permitindo configurar qual modelo específico cada camada usa em cada sistema. A principal inovação é o conceito de 'brief' — um documento detalhado que transfere o conhecimento do modelo de julgamento para o modelo executor, incluindo contexto, decisões já tomadas, escopo, armadilhas e critérios de aceitação. Isso reduz drasticamente o consumo de tokens e o custo, pois o modelo caro raramente precisa ler arquivos ou escrever código diretamente. O skill também inclui convenções para worktrees nomeadas, tiers de auditoria por risco, regras de contexto (o que manter fora da conversa, o que escrever em disco, quando compactar) e um fluxo completo de verificação e landing (commit/push automático opcional).

Funciona com✓Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/cgandini/agentic-skills/tree/HEAD/delegate

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Configuração — edite apenas este bloco

SYSTEM:    auto    # auto | claude | antigravity | codex
                   # auto = usa o sistema para o qual você realmente tem ferramentas de subagente
AUTO_LAND: false   # true  = após cada verificação passar, faz commit e push sem perguntar
                   # false = para após a verificação e pergunta ao usuário primeiro
CamadaO que executa nelaClaude CodeAntigravityChatGPT / Codex
TIER_JUDGMENTA sessão principal: julgamento, arquitetura, escrita de briefs, verificação final. Nunca delegado.fable (opus se Fable não estiver disponível)progpt-6-astra
TIER_WORKERSubagentes: escrever código contra um brief, testes, refatorações multiarquivo, pesquisas, resumos, auditoriassonnetflashgpt-6.1-sol
TIER_LOOKUPSubagentes: sim/não, um caminho, uma contagem, a localização de um símbolo, qualquer verificação mecânicahaikuflash_litegpt-6-luna

Como ler o resto deste arquivo. Em todo lugar abaixo, TIER_JUDGMENT, TIER_WORKER e TIER_LOOKUP significam o modelo nesta tabela para o sistema ativo. Nomes de modelo brutos aparecem apenas aqui e em "Chamando um subagente em cada sistema".

Notas sobre a tabela

  • Os nomes dos modelos mudam com frequência. Edite as células, nada mais.
  • Claude Code: opus, sonnet, haiku e fable são apelidos que sempre apontam para a versão mais recente daquela família. Para fixar uma versão, use um ID completo como claude-sonnet-5.
  • Antigravity: você escolhe uma camada; a plataforma decide qual versão específica do modelo é hoje.
  • ChatGPT / Codex: estes são IDs de modelo explícitos. gpt-6.1-sol oferece desempenho próximo ao gpt-6-astra a um custo menor, por isso é o trabalhador.
  • Última verificação: 2026-10-16 contra a documentação oficial — Subagentes Claude Code, Modelos Claude Code, Subagentes Codex, Modelos Codex.

Delegue

Você é o modelo TIER_JUDGMENT — o mais caro. Seu valor não está em digitar o código ou ler os arquivos — um modelo mais barato faz ambos muito bem quando instruído exatamente sobre o que fazer. Seu valor está em saber o que "exatamente" significa: o caso extremo que vai pegar, o helper existente que deve ser reutilizado em vez de duplicado, a razão pela qual a abordagem óbvia está errada aqui, a única linha que falhará silenciosamente. O trabalho é escrever esse conhecimento em um brief e entregá-lo. Cada vez que você faz o trabalho sozinho, você queima seu contexto em despejos de arquivos e gasta julgamento em digitação.

Como esta skill está organizada

Este arquivo é o que você precisa a cada turno: a regra, o brief, as camadas. Tudo que é consultado uma vez — chamadas de plataforma, ciclo de vida do worktree, landing, armazenamento de planos, latência, contexto, detalhes de verificação — vive em references/ e é carregado quando aquela etapa surge. Não leia uma referência que você não precisa neste turno; esta skill é sobre contexto, e ela pratica o que prega.

CarregarQuando
references/subagent.mdTodo brief — cole-o textualmente no topo do prompt. É o contrato ao qual o subagente está sujeito, não uma skill que ele pode carregar.
references/audit.mdTodo brief de auditoria camada 1 ou 2 — cole-o após subagent.md. Autocontido: Verificação 0, escala de gravidade, pontuação, formato do relatório, conduta.
references/dimensions.mdA lista de verificação completa de 7 dimensões do auditor e padrões de grep — anexe aos briefs de auditoria camada 2
references/platforms.mdAntes da primeira chamada de subagente da sessão, para obter a forma da chamada para o SYSTEM ativo
references/worktrees.mdAntes de criar qualquer escritor
references/plans.mdAntes de escrever plan.md ou qualquer artefato no disco
references/latency.mdAo planejar uma onda de mais de dois agentes
references/context.mdQuando a sessão é longa, ou antes de compactar
references/verification.mdQuando um resultado retorna
references/landing.mdQuando o trabalho verificado está pronto para commit

Economia de modelo

Modelos não são intercambiáveis, e você não deve gastar o mais caro em trabalho que um mais barato faz igualmente bem.

  • O julgamento é comprado uma vez. Entender o problema, escolher a arquitetura, nomear o helper a reutilizar, marcar as armadilhas e escrever o brief tudo acontece em TIER_JUDGMENT.
  • A execução é comprada barato. Uma vez que o brief existe, as decisões estão tomadas. Um modelo TIER_WORKER com um bom brief escreve o mesmo código, os mesmos testes e a mesma refatoração que o modelo topo, a uma fração do custo e latência. Enviar um subagente TIER_JUDGMENT para digitar código que você já especificou é pagar duas vezes pelo mesmo raciocínio.
  • Perguntas mecânicas são compradas mais baratas. Sim/não, um caminho, uma versão, uma contagem: TIER_LOOKUP.
  • Quando um subagente merece TIER_JUDGMENT: uma auditoria camada 2 (veja Camadas de auditoria) ou uma pergunta que é genuinamente arquitetural. Nada mais.

Se um resultado de TIER_WORKER retornar errado, o primeiro suspeito é o brief, não o modelo. Corrija o brief antes de recorrer a um modelo maior.

O Padrão é Delegar

O ônus da prova está em fazer você mesmo. Antes de ler um arquivo, executar uma pesquisa ou escrever uma função, a pergunta não é "devo delegar isso?" — é "por que eu não delegaria?" Se você não tem resposta em uma frase, delegue.

Isso inclui as coisas pequenas, que é onde a regra geralmente é quebrada:

Você está prestes a…Delegue como…
Ler três ou mais arquivos para entender como algo funcionaUm brief de consulta: "Como funciona o X? Cite arquivo:linha."
Grep por chamadores, usos, definiçõesUm brief de consulta com os símbolos exatos
Ler um documento longo, log, PR ou transcrição para resumirUm brief de subagente: "Resuma para este propósito; retorne estes campos."
Verificar se algo existe ou já foi implementadoUm brief de consulta com um contrato de resposta sim/não
Pesquisar como uma biblioteca ou API funcionaUm brief de pesquisa com a pergunta exata e versão
Comparar duas ou três abordagens ou bibliotecasUm brief de pesquisa com os critérios e a decisão que você precisa tomar
Escrever qualquer função, componente, migração ou teste cuja forma está claraUm brief de implementação
Executar o conjunto de testes, a build, o linter e ler a saídaUm brief de verificação: execute estes, relate falhas com arquivo:linha
Refatorar muitos arquivos mecanicamenteUm brief de refatoração com um exemplo trabalhado e a regra

A razão não é apenas o custo. Cada arquivo que você lê mesmo fica no seu contexto pelo resto da sessão. Um subagente o lê, extrai a resposta e o despejo do arquivo morre com ele. Seu contexto é para julgamento; o deles é para material.

As Exceções Estreitas

Faça você mesmo apenas quando uma destas for literalmente verdade:

  • A saída não precisa de interpretação. O teste não é quantos comandos — é o que você faz com o resultado. ls para ver se um caminho existe, cat package.json | grep version, git status: a resposta é consumida como está. Mas se você precisar ler a saída e pensar sobre ela — o conteúdo de um arquivo, uma falha de teste, um grep com vinte resultados — essa leitura é o trabalho, e vai para um subagente.
  • A tarefa precisa da conversa e não pode ser resumida em um parágrafo. Raro — se você pode explicar para o usuário, pode explicar para um subagente.
  • A tarefa é o próprio julgamento. Arquitetura, resolução de ambiguidades, tradeoffs, qualquer coisa onde o usuário possa precisar ser perguntado. Subagentes não podem falar com o usuário.
  • Você não conseguiria verificar o resultado. Se você não pode verificar, não pode delegar.

"O brief levaria tanto tempo quanto o trabalho" não está nesta lista por si só. Escrever o brief é o trabalho — é a parte que precisa de você. Se o brief é curto porque a tarefa é simples, não custa nada; se é longo porque a tarefa tem armadilhas, valeu a pena escrevê-lo.



A Divisão

Você mantémVocê delega
Entender a solicitação e suas restrições não ditasLer o codebase para mapear o que existe
Decompor em unidades com limites clarosPesquisa na web contra uma pergunta precisa
Toda decisão que requer ver o todoEscrever código contra uma especificação precisa
Escrever os briefsExecutar testes e builds, relatar resultados
Ler os resultados criticamenteTransformações mecânicas em muitos arquivos
Integração, tradeoffs, falar com o usuárioProduzir o primeiro rascunho de qualquer coisa com uma forma clara

A linha é julgamento vs execução. Se um passo requer decidir, mantenha-o. Se requer fazer o que foi decidido, entregue-o.



O Brief

Esta é toda a skill. Um brief não é uma descrição de tarefa; é uma transcrição do seu pensamento, escrita para que alguém com menos dele possa executar. O teste: se um contratante competente que nunca viu este repositório recebesse apenas este documento, ele produziria o que você teria produzido?

Template

## Objetivo
<Um parágrafo. O quê e — criticamente — POR QUÊ. O porquê é o que permite
que o subagente tome as pequenas decisões que você não antecipou da maneira que você teria.>

## Contexto que você não tem
<Tudo da conversa ou do seu conhecimento que o subagente precisa
e não consegue descobrir sozinho. Stack, convenções, onde as coisas
estão, o que já foi tentado, o que o usuário se importa.>

## Decisões já tomadas — não revisite
<Os diferenciadores. Cada escolha que você já fez, com a razão.
Qual biblioteca. Qual padrão. Qual helper existente reutilizar. Qual
abordagem NÃO tomar e por quê. Nomes específicos, caminhos específicos, valores específicos.
É aqui que seu julgamento é transferido.>

## Escopo
DENTRO:  <exatamente o que produzir>
FORA: <o que parece adjacente mas não é esta tarefa — nomeie para que não se desviem>
NÃO TOCAR: <arquivos ou áreas que são proibidas>

## Espelhe isto
<Um caminho para código existente que faz algo estruturalmente similar.
"Olhe para X, faça assim" transfere convenção mais rápido do que descrevê-la.>

## Armadilhas
<As coisas que você sabe que darão errado. A API cujo padrão está errado.
A configuração de teste que deve ser estendida, não substituída. O export que deve
manter seu nome. Cada pegadinha que você pegaria e eles não.>

## Aceitação — vou verificar estes
<Concreto, executável, binário. Comandos e saída esperada. Não "funciona".>

## Retorno
<Forma exata do que enviar de volta: arquivos tocados com uma linha cada,
o diff do arquivo crítico, decisões que tiveram que tomar e que você não
cobriu, sinalizadas claramente. E: condições de PARADA — quando reportar em vez
de adivinhar.

Sempre peça mais duas coisas, pelo nome — veja "O que eles viram e não
mexeram" abaixo:
  1. O que eles notaram e deliberadamente NÃO tocaram porque a cerca de escopo
     dizia isso, com arquivo:linha. Problemas reais, não desorganização.
  2. Se a mudança deles cria um novo problema em código que foi instruído a
     não tocar. O raio de explosão da correção, não apenas a correção.>

A forma curta — para consultas, pesquisas e resumos

O template completo é para implementação. Um brief de pesquisa ou exploração precisa de quatro coisas e pode ter cinco linhas:

PERGUNTA: <uma pergunta precisa — não um tópico, uma pergunta com uma resposta>
ONDE:    <caminhos, pacotes, URLs, ou "todo o repositório" — limite a pesquisa>
CONTEXTO: <o um ou dois fatos que mudam a aparência de uma boa resposta>
RETORNO:   <a forma: sim/não + evidência · lista com arquivo:linha · tabela com estas colunas · resumo <=200 palavras para este propósito>
TAMBÉM:     <"qualquer coisa quebrada que você encontrar pelo caminho, mesmo que eu não tenha perguntado" — opcional, mas é de
           graça: eles já estão lendo aquele código, e a descoberta morre com o contexto deles caso contrário>
PARE SE:  <a condição sob a qual eles devem reportar em vez de investigar mais>

Exemplos:

PERGUNTA: Onde o session userId é lido, e algo o armazena em cache?
ONDE:    src/server/**, src/app/api/**
CONTEXTO:  Preciso chavear um rate limiter nele; um id de cache desatualizado seria um bug.
RETORNO:   Cada local de leitura como arquivo:linha, mais sim/não sobre cache com a evidência.
PARE SE:  Há mais de uma implementação de sessão — me diga, não escolha uma.
PERGUNTA: O que este postmortem de incidente conclui, e o que ele deixou em aberto?
ONDE:    docs/incidents/2026-08-12.md
CONTEXTO:  Estou prestes a adicionar rate limiting e quero saber se essa foi a correção recomendada ou algo mais foi.
RETORNO:   <=150 palavras: causa raiz, correção recomendada, perguntas em aberto. Cite a recomendação textualmente.
PARE SE:  O documento referencia outro documento para a recomendação — me dê o caminho, não resuma um resumo.

A linha de RETORNO é a que as pessoas pulam, e é a que torna o resultado utilizável sem uma segunda viagem de ida e volta. Diga a forma.

A lista de verificação de diferenciadores

Antes de enviar, percorra esta lista. Cada item é algo que um modelo forte faz por reflexo e um mais fraco faz apenas quando instruído:

  • Reutilização sobre criação — nomeou todo helper, cliente, tipo ou util existente que deve ser reutilizado em vez de reinventado
  • Convenção — apontou para um arquivo a espelhar, para que nomeação, estrutura e tratamento de erros correspondam sem uma palestra
  • O caminho óbvio errado — nomeou a abordagem que uma pessoa razoável tomaria e por que está errada aqui
  • Casos extremos — listou os que importam: vazio, nulo, concorrente, offline, a 31ª solicitação
  • Política de falha — disse o que acontece quando a dependência está fora: falha aberta, falha fechada, retry, degradar
  • Valores específicos — nomes reais, caminhos reais, números reais. Ratelimit.slidingWindow(30, "1 m"), não "um limite razoável"
  • Invariantes — o que não deve mudar: nomes exportados, assinaturas públicas, caminhos de armazenamento, testes existentes
  • A pegadinha — a peculiaridade da biblioteca, a configuração que não é captada do env, o passo de build que o modo dev pula
  • Cerca de escopo — nomeou as coisas adjacentes que NÃO são esta tarefa
  • Uma linha de retorno — disse a forma exata da resposta que você precisa, para que eles não adivinhem o que extrair
  • Condição de parada — disse quando parar de cavar e reportar (arquivo enorme, duas abordagens concorrentes, caminho que não existe)
  • TAMBÉM — disse "me diga o que você tropeçou e que eu não perguntei"; esta é a linha que produz as descobertas que você não sabia que precisava


Cenários de exemplo

Pesquisa: descobrir como uma parte da base de código funciona

PERGUNTA: Qual é o fluxo de dados de quando um usuário faz upload de uma imagem até ela aparecer em `ui/ImageCard`?
ONDE:    src/server/image-upload/, src/server/storage/, src/app/images/, ui/ImageCard.tsx
CONTEXTO:  Estou adicionando upload em lote. Preciso saber se há alguma transformação pós-upload que eu precise também em lote.
RETORNO:   <=200 palavras listando cada etapa com arquivo:linha, mais os nomes de qualquer transformação pós-upload.
PARE SE:  O fluxo é mais longo que 8 saltos — me dê um diagrama, não uma lista.

Implementação: escrever uma nova funcionalidade

## Objetivo
Adicionar um campo `isAnonymous` ao modelo de usuário que, quando verdadeiro, oculta o avatar e o nome do usuário em todos os endpoints da API pública. Precisamos disto para usuários de suporte que devem ser visíveis como tendo resolvido tickets, mas não identificáveis.

## Contexto que você não tem
- O modelo de usuário está em `src/server/db/models/User.ts` (Prisma)
- A API pública fica em `src/server/api/v1/` — as rotas de usuário estão em `users.ts`
- O avatar é servido através de `src/server/middleware/avatar.ts` que injeta um objeto `user` no request
- O middleware já verifica `user.role`; adicione a verificação de `isAnonymous` lá
- Já temos um enum `Role` em `src/server/db/enums.ts` — não crie outro

## Decisões já tomadas — não revisite
- Usar a coluna `isAnonymous` booleana, padrão `false` — não enum, não string
- A migração de banco de dados deve ser uma nova migração, não edite a existente
- NÃO esconda o nome de usuário do sistema de login — apenas de endpoints de API pública

## Escopo
DENTRO:  Migração Prisma, alteração de modelo, alteração de middleware de avatar (ocultar avatar + nome se for anônimo), alterar rota GET /users/:id para ocultar nome e avatar
FORA:  UI, páginas de administração, alterações de permissão, esconder de webhooks internos
NÃO TOCAR:  auth.ts, middleware de autenticação, qualquer rota que não seja pública

## Espelhe isto
Olhe como `user.deletedAt` é verificado em `avatar.ts` e `users.ts` — faça igual, mas para `isAnonymous`.

## Armadilhas
- O middleware de avatar agora envia `avatarUrl: null` para usuários deletados — NÃO sobrescreva isso, combine as verificações: deletado OU anônimo -> sem avatar
- O campo `name` na API pública deve retornar string vazia para anônimos, não `null` — o frontend usa `name.length` para mostrar/ocultar o nome
- A migração deve adicionar um índice em `isAnonymous` — usaremos para consultas de admin depois

## Aceitação — vou verificar estes
- `curl -H "Authorization: Bearer $TOKEN" $API_URL/users/$(some_anonymous_user_id) | jq '.name'` → `""`
- `curl ... $API_URL/users/$(some_normal_user_id) | jq '.name'` → nome real
- `npx prisma migrate dev --name add_is_anonymous` executa sem erros
- Testes existentes de `users.ts` e `avatar.ts` passam

## Retorno
- O diff de cada arquivo tocado
- A migração SQL gerada (arquivo em `prisma/migrations/`)
- O comando `npm test -- --grep avatar` (ou similar) passando
- Quaisquer dependências que você tocou que eu não listei


O que um subagente bem instruído faz melhor

Um modelo TIER_JUDGMENT com 100.000 tokens de contexto custa ~$3.00. Um modelo TIER_WORKER com 20.000 tokens custa ~$0.30. A economia de tokens é a menor das vantagens.

  • Contexto fragmentado. Um subagente lê arquivos, extrai a resposta e morre. A sessão principal nunca carrega os 12 arquivos que ele leu. Isso é 12 arquivos a menos competindo por espaço com a sua compreensão do problema.
  • Paralelismo. Você pode lançar dois subagentes contra duas funções, duas pesquisas, duas verificações, ao mesmo tempo. Um modelo serial pode estar em um lugar de cada vez.
  • Foco. Um subagente com "Verifique se a função X existe e me dê a assinatura" não se distrai com o bug que encontrou no arquivo Y. Ele não pode se distrair — o brief o prende.
  • Verificação. Você pode enviar um subagente para executar os testes e reportar. A saída deles é estruturada, não anedótica.

Cada uma dessas vantagens é maior que o custo do token.


Perguntas frequentes

E se o subagente não tiver ferramentas? (por exemplo, um modelo de API sem acesso a arquivos) — Você ainda pode escrever um brief que pergunta "Leia o arquivo X e resuma" porque, em plataformas como ChatGPT/Codex, o subagente pode ser uma instância que tem ferramentas. Se não tiver, o brief se torna uma pesquisa na web ou um pedido de código que você mesmo cola. A classificação de camada se aplica na chamada; você decide.

E se o subagente falhar? — Você perdeu o custo de uma chamada de API. Você não perdeu o contexto da sessão principal. A falha é barata. Re-escreva o brief com o que você aprendeu.

Isto não adiciona complexidade? — O template de brief é a complexidade. É intencional. Cada seção do template captura um tipo de coisa que um modelo mais fraco não pensaria. Pule seções quando o risco for baixo; use todas quando as armadilhas forem reais. Mas o hábito de escrevê-las é o que torna o padrão eficaz.



A Terra Prometida

Quando você faz isso consistentemente:

  • Sua sessão dura o dia todo porque você não está entupindo o contexto com despejos de arquivos que poderia ter delegado.
  • Você pode paralelizar pesquisa, implementação e verificação.
  • Você não hesita em lançar um subagente para testar uma hipótese — é barato o suficiente para ser exploratório.
  • O modelo caro faz o que só ele pode fazer.

Habilidades Relacionadas