MÓDULO 4.2 · Trilha 4 · Avançado & cross-ambiente

🌐 Subagentes no Codex e outros ambientes

O subagente não é um truque do Claude Code — é uma ideia: delegar trabalho a um contexto isolado e receber só o relatório. Essa ideia roda em outros lugares. Neste módulo você vai escrever uma fonte .md que funciona em mais de um ambiente — o Claude Code e o Codex CLI da OpenAI.

6
Tópicos
~30
Minutos
Avançado
Nível
Portável
Tipo

Pense numa tomada elétrica. O aparelho é o mesmo; muda o adaptador conforme o país. O princípio (110/220 V, um plugue) não muda — muda o encaixe. Subagente é igual: o princípio — "delega para um contexto isolado, recebe um resumo" — é universal. O que muda de ambiente para ambiente é o encaixe: onde o arquivo mora, como se chama o frontmatter, os nomes das ferramentas. A meta deste módulo é escrever um único .md e plugá-lo em dois runtimes.

SKILL.md uma fonte portável adaptador.claude/agents adaptador~/.codex/prompts Claude Codeagente / skill rodando Codex CLIprompt / agente rodando

↑ Uma fonte .md; cada runtime aplica seu adaptador. A ideia é a mesma — o encaixe muda.

Conteúdo detalhado

1

🧩 A ideia é maior que a ferramenta

Tudo que você aprendeu até aqui — maestro que delega, janela própria, relatório limpo — descreve um padrão, não um produto. O padrão é: "tarefa grande vira um subprocesso com contexto próprio; só a conclusão volta". Qualquer ferramenta de agente sério precisa de algo assim, porque o problema (contexto que enche, trabalho que se repete) é universal. Por isso o conceito viaja.

🔌 Princípio × encaixe

Separe duas coisas na cabeça. O princípio é o que você delega e por quê. O encaixe é a papelada local — pasta, nome de campo, sintaxe. Trocar de ambiente mexe só no encaixe:

  • Princípio (não muda): isolar contexto · um papel por agente · devolver resumo, não a conversa.
  • Encaixe (muda): onde mora o arquivo · como se chama o frontmatter · nome das ferramentas · quem invoca.
  • Consequência: 80% do seu .md é reaproveitável; só a casca precisa de adaptação.
O que é:

A constatação de que "subagente" é um padrão de arquitetura (delegar a um contexto isolado), e não um recurso exclusivo de um app.

Por que aprender:

Liberta você de uma ferramenta só. O conhecimento da trilha inteira passa a render em qualquer runtime de agente, presente ou futuro.

Conceitos-chave:

Padrão × produto · princípio (estável) × encaixe (local) · portabilidade do conceito.

2

🟢 Codex CLI: o mesmo, com outro nome

O Codex CLI (o agente de terminal da OpenAI) tem as mesmas peças, só com vocabulário diferente. Onde o Claude Code fala "subagente" e "skill", o Codex fala em prompts e agentes markdown que você guarda numa pasta e invoca. O esqueleto bate: um arquivo de instruções + um gatilho + um conjunto de ferramentas permitidas.

Conceito Claude Code Codex CLI (equivalente)
Unidade de trabalho delegadasubagente (.md)prompt/agente markdown
Habilidade reutilizávelskill (SKILL.md)prompt salvo + AGENTS.md
Onde mora (projeto).claude/agents/.codex/prompts/
Onde mora (global)~/.claude/agents/~/.codex/prompts/
Memória de projetoCLAUDE.mdAGENTS.md
Como invocaautomático pela description ou @nomeexplícito por nome do prompt (ex.: /nome)

💡 A diferença mais importante

O Claude Code auto-roteia: o maestro lê a description e decide sozinho quando delegar. O Codex tende a ser mais explícito — você chama o prompt pelo nome. Mesma peça, gatilho diferente: lá a description é um ímã automático; aqui ela vira mais uma etiqueta para você escolher.

O que é: o mapa nome-a-nome entre as peças do Claude Code e as do Codex CLI.
Por que aprender: com o mapa, "portar" deixa de ser tradução do zero e vira preencher uma tabela de equivalências.
Conceitos-chave: prompt/agente Codex · AGENTS.md × CLAUDE.md · auto-roteamento × invocação explícita.
3

♻️ Cross-runtime: a ideia do "polyskill"

Em vez de manter duas cópias (uma pro Claude, uma pro Codex) que divergem com o tempo, você escreve uma fonte só e "emite" a versão de cada runtime a partir dela. Essa é a ideia de um polyskill: um .md portável é o molde, e cada ambiente é um build daquele molde. Uma verdade, vários destinos — o oposto de copiar-e-colar.

fonte portável (o molde) papelquem é passoso que faz saídao que volta build → Claude Code+ casca: name, description, tools build → Codex CLI+ casca: prompt, AGENTS.md

📊 Por que vale ter uma fonte só

Duas cópias divergem: você corrige um bug numa, esquece a outra, e em um mês elas se contradizem. Com uma fonte → vários builds, a correção entra uma vez e os dois ambientes herdam. É exatamente o motivo de "contexto limpo" da Trilha 1 aplicado ao seu repositório de skills: menos duplicação, menos deriva.

O que é: um único .md portável que serve de molde; cada runtime é gerado (build) a partir dele.
Por que aprender: mantém uma verdade só — corrige num lugar, vale em todos — em vez de cópias que divergem.
Conceitos-chave: polyskill · molde × build · miolo portável (papel/passos/saída) × casca por runtime.
4

🛠️ Equivalência de ferramentas

As ferramentas têm nomes diferentes, mas as capacidades são as mesmas: ler arquivo, buscar em texto, listar caminhos, editar, rodar shell. Em vez de citar o nome exato da ferramenta no corpo do seu .md, descreva a capacidade ("leia os arquivos", "busque por padrão") — assim o mesmo texto funciona nos dois, porque cada runtime resolve qual ferramenta concreta usar.

Capacidade Claude Code Codex / shell
Ler um arquivoReadcat / leitura de arquivo
Buscar em textoGreprg / grep
Listar caminhos por padrãoGlobfind / ls
Editar arquivoEdit / Writepatch / escrita no shell
Rodar comandoBashexecução de shell (nativa)
Pesquisar na webWebFetch / WebSearchferramenta de web (se habilitada)

✓ Escreva o corpo assim (portável)

  • "Leia os arquivos alterados e entenda a intenção."
  • "Busque por chamadas inseguras no código."
  • "Não modifique nada — apenas reporte."

✗ Evite amarrar a uma ferramenta

  • "Use a tool Grep com flag -n…" (só Claude)
  • "Chame WebFetch em…" (some no Codex)
  • Citar nomes exatos no corpo trava a portabilidade.
O que é: o mapeamento entre ferramentas nomeadas do Claude Code (Read/Grep/Glob…) e os equivalentes de shell/Codex.
Por que aprender: descrever a capacidade em vez do nome da tool faz o corpo do .md rodar igual nos dois runtimes.
Conceitos-chave: capacidade × ferramenta nomeada · Read↔cat, Grep↔rg, Glob↔find · corpo agnóstico de tool.
5

⚖️ O que muda × o que não muda

Antes de portar, fixe a fronteira. O princípio — delegar para contexto isolado, um papel por agente, devolver resumo — atravessa qualquer ambiente intacto. O que muda é a casca: nomes de campo, pasta, sintaxe de invocação, ferramentas disponíveis. Saber o que fica firme evita reescrever o que já estava certo.

✓ Não muda (o princípio)

  • Delegar a um contexto isolado
  • Devolver relatório, não a conversa toda
  • Um papel por agente (sem faz-tudo)
  • O miolo: papel + passos + saída + limites

✗ Muda (a casca)

  • Nome dos campos do frontmatter
  • Pasta onde o arquivo mora
  • Como o agente é invocado
  • Nomes das ferramentas concretas

⚠️ O erro de portabilidade mais comum

Reescrever o miolo achando que cada runtime precisa de um cérebro diferente. Não precisa: o cérebro (papel, passos, saída, limites) é o mesmo. Quem porta bem mexe só na casca e deixa o miolo intacto — assim os dois builds se comportam igual.

O que é: a linha que separa o invariante (princípio/miolo) do variável (casca/encaixe) ao trocar de ambiente.
Por que aprender: portar fica rápido quando você só toca na casca e nunca reescreve o que já funcionava.
Conceitos-chave: invariante × variável · miolo intacto · casca adaptável · paridade de comportamento.
6

🚚 Portar uma skill — e onde param os limites

Portar é um procedimento de três tempos: extrair o miolo, trocar a casca, testar a paridade. Mas portabilidade tem teto: nem tudo cruza o limite. Coisas muito coladas a um runtime — uma MCP exclusiva, um nome de tool específico, um modelo só de um provedor — não viajam e viram uma nota de adaptação.

1

Extraia o miolo

O que é igual nos dois.

Separe papel + passos + saída + limites do resto. Reescreva qualquer "use a tool X" como capacidade ("leia", "busque"). Esse texto vira a fonte portável.

2

Troque a casca

O encaixe de cada runtime.

Monte o frontmatter do alvo (Claude: name/description/tools; Codex: prompt + AGENTS.md) e ponha o arquivo na pasta certa do ambiente.

3

Teste a paridade

Mesma entrada, mesma saída?

Rode a mesma tarefa nos dois e compare. Se o Codex não dispara sozinho, lembre que lá a invocação costuma ser explícita — isso é casca, não bug.

🚧 Os limites (o que não cruza)

  • Ferramenta/MCP exclusiva de um runtime: deixe uma nota "no Codex, troque por shell equivalente".
  • Modelo de um provedor só (ex.: um Opus): no outro ambiente, escolha o modelo de papel correspondente.
  • Auto-roteamento: a description que dispara sozinha no Claude pode exigir chamada explícita no Codex.
O que é: o procedimento extrair → trocar casca → testar paridade, mais a lista do que não é portável.
Por que aprender: dá um passo a passo repetível e cria o hábito de registrar a nota de adaptação onde a portabilidade acaba.
Conceitos-chave: extrair miolo · trocar casca · teste de paridade · nota de adaptação · limites (MCP, modelo, roteamento).
📄

Exemplo real: um agente portável (Claude → Codex)

Aqui está um doc-summarizer.md escrito para ser portável: o frontmatter é a casca do Claude Code, e o corpo é o miolo agnóstico de ferramenta. Logo depois, a nota de adaptação mostra o que trocar para rodar o mesmo arquivo no Codex CLI.

.claude/agents/doc-summarizer.md Markdown + YAML
--- # CASCA (Claude Code) — troca por runtime
name: doc-summarizer
description: Lê documentos longos e devolve um resumo
  curto com os pontos-chave. Use para condensar
  arquivos grandes sem encher o contexto.
tools: Read, Grep, Glob   # só leitura
model: haiku             # barato p/ escanear
---

# MIOLO (portável) — NÃO cita ferramenta por nome
You are a precise document summarizer.

When invoked:
1. Read the target documents and grasp the intent.
2. Search for the key claims, numbers and decisions.
3. Write a summary: 5 bullets, then the source paths.

Output: only the summary. Do not paste raw
content. Do not modify any file.

📝 Nota de adaptação — rodar no Codex CLI

  • 1.Pasta: mova o arquivo de .claude/agents/ para .codex/prompts/ (ou o global ~/.codex/prompts/).
  • 2.Frontmatter: o Codex não usa tools:/model: assim — registre o papel e as regras no AGENTS.md do projeto; o corpo (miolo) fica igual.
  • 3.Ferramentas: "Read/Grep/Glob" viram cat/rg/find no shell — o corpo já fala em "read/search", então nada a mudar ali.
  • 4.Invocação: em vez de auto-disparo pela description, chame o prompt pelo nome (/doc-summarizer).

🧠 O miolo (viaja inteiro)

  • Papel — "a precise document summarizer".
  • Passos — ler, buscar, resumir (sem nome de tool).
  • Saída — 5 bullets + caminhos.
  • Limites — não colar bruto, não editar.

🔌 A casca (troca por runtime)

  • Pasta.claude/agents.codex/prompts.
  • Config — frontmatter ↔ AGENTS.md.
  • Tools — nomeadas ↔ shell.
  • Gatilho — auto ↔ chamada por nome.
⌨️

Prompts prontos (copie e cole)

Três prompts para portar e cross-rodar. O padrão é sempre o mesmo: peça para preservar o miolo, adaptar a casca, e deixar uma nota onde a portabilidade acaba.

Prompt 1 — adaptar um subagente para o Codex troca de casca
Pegue este subagente do Claude Code e adapte para o
Codex CLI. Mantenha o corpo (papel/passos/saída) intacto,
troque só a casca: pasta, frontmatter e invocação. No fim,
liste uma "nota de adaptação" com o que não é portável.
Prompt 2 — tornar uma skill portável (polyskill) uma fonte → vários builds
Reescreva esta skill como fonte portável: remova nomes
de ferramenta específicos do corpo e descreva a capacidade
("leia", "busque"). Depois emita dois builds — um para
Claude Code, um para Codex — a partir da mesma fonte.
Prompt 3 — mapear ferramentas entre runtimes equivalência de tools
Liste as ferramentas que este .md usa no Claude Code
(Read, Grep, Glob, Bash…) e me dê o equivalente de shell
para o Codex. Aponte quais não têm equivalente direto e
precisam virar nota de adaptação.
🖥️

Tela simulada: emitir a fonte para 2 runtimes

É assim que um build cross-runtime aparece no terminal: você roda o emissor uma vez sobre a fonte portável, e ele gera os arquivos de cada ambiente — adaptando a casca, mantendo o miolo. Repare nos dois destinos saindo do mesmo SKILL.md.

polyskill build · doc-summarizer · 2 runtimes ⏱ 00:06
$ polyskill build doc-summarizer.md --all
→ fonte portável carregada · miolo: papel + passos + saída
● build claude-code
ok
→ .claude/agents/doc-summarizer.md (frontmatter: name, description, tools, model)
● build codex
ok
→ .codex/prompts/doc-summarizer.md + nota → AGENTS.md
! 1 nota de adaptação: tools nomeadas → shell (cat/rg/find)
✓ 2 runtimes emitidos a partir de 1 fonte · miolo idêntico
fonte única · doc-summarizer.md
paridade do miolo
100%

↑ Recriação ilustrativa do terminal (não é screenshot real). Uma fonte entra; dois builds saem com o mesmo miolo e cascas diferentes.

🎯

Exercício

Pegue um subagente seu (ou o doc-summarizer.md acima) e porte-o para o Codex CLI. Entregue dois itens: o arquivo adaptado e uma nota de adaptação com o que mudou e o que não é portável.

Como fazer

  1. Extraia o miolo: separe papel + passos + saída + limites; reescreva qualquer nome de tool como capacidade.
  2. Troque a casca: aponte a nova pasta (.codex/prompts/), onde vai a config (AGENTS.md) e como invocar.
  3. Liste os limites: aponte ao menos uma coisa que não cruza (MCP, modelo de provedor, auto-roteamento) e o que fazer no lugar.

✅ Critério de verificação — como saber que acertou

A sua entrega passa se atender aos quatro sinais:

  • O miolo ficou intacto — papel/passos/saída idênticos entre os dois.
  • A casca mudou — pasta, config e invocação corretas para o Codex.
  • O corpo não cita ferramenta por nome — fala em "leia/busque", não em Grep.
  • Existe pelo menos uma nota de adaptação nomeando um limite real.

Se você teve que reescrever o miolo para o Codex, provavelmente algo da casca vazou para dentro do corpo — volte e isole.

Exemplo resolvido (uma linha de cada)

Miolo (igual): "you are a precise document summarizer · read → search → 5 bullets + paths". Casca (trocada): arquivo em .codex/prompts/, regras no AGENTS.md, chamado por /doc-summarizer. Nota: "model: haiku não existe no Codex — usar o modelo barato/rápido equivalente do provedor".

Resumo do módulo

Ideia > ferramenta — subagente é um padrão (delegar a contexto isolado), não um recurso de um app só.
Codex CLI — mesmas peças com outro nome: prompt/agente, AGENTS.md no lugar de CLAUDE.md, invocação explícita.
Polyskill — uma fonte .md portável → vários builds; corrige num lugar, vale em todos.
Equivalência de tools — Read↔cat, Grep↔rg, Glob↔find; descreva a capacidade, não o nome.
Muda × não muda — princípio/miolo fica firme; casca (pasta, campos, gatilho, tools) é o que se adapta.
Portar + limites — extrair → trocar casca → testar paridade; o que não cruza vira nota de adaptação.

Próximo módulo:

4.3 — Comparando modelos por papel. Opus/Sonnet/Haiku × GPT/Codex × outros provedores: qual modelo para cada papel da frota.