MÓDULO 2.1

🩺 Diagnóstico do ambiente

Antes de mover uma vírgula: saber o que existe. Neste módulo você clona o kit, roda o doctor.sh pra saber se a máquina está pronta e o audit.sh pra inventariar o que o Claude tem e o Codex não. Tudo somente leitura, com a saída real desta máquina como exemplo.

6
Tópicos
~30
Minutos
Básico
Nível
Prática
Tipo
1

📦 Clonar o kit

O kit agente-claude-codex é o "nível 2, um comando" que a newsletter imaginou: um repositório com cinco scripts bash, os mega-prompts em texto copiável e um template de núcleo portátil. Ele não instala nada no sistema, não pede senha e não toca em ~/.claude nem em ~/.codex sem você mandar. O primeiro passo é só trazer a pasta pra sua máquina.

🎯 Objetivo

Ter o kit numa pasta local, com os scripts executáveis, pronto pra rodar o diagnóstico.

git clone https://github.com/inematds/agente-claude-codex
cd agente-claude-codex
ls scripts/
# adapt-instructions.sh  audit.sh  doctor.sh  init-core.sh  readback-test.sh  sync-skills.sh

Como verificar: o ls lista os seis scripts. Se algum não tiver permissão de execução, chmod +x scripts/*.sh.

Novo aqui? "Clonar" é baixar uma cópia completa de um repositório git, com histórico. "Script bash" é um arquivo de texto com comandos de terminal que rodam em sequência. Nenhum dos scripts do kit precisa de sudo.

scripts/

Os seis comandos: diagnosticar, auditar, adaptar, instalar núcleo, portar skill, provar.

prompts/

Prompt A, Prompt B, readback e handoff em texto pra colar num agente.

template/

AGENTS.md, context/, tasks/, handoffs/ pra copiar em qualquer projeto.

Conceitos-chave

Kit

Scripts + prompts + template, sem instalação global.

Somente leitura

doctor e audit não alteram nada; só leem.

Sem sudo

Tudo roda como seu usuário, na sua pasta.

Reversível

Apagar a pasta desfaz tudo que este módulo faz.

2

🩺 doctor.sh: ok / aviso / falta

O doctor responde a pergunta que vem antes de qualquer outra: meu ambiente está pronto? Ele confere git, python3, node, o Claude Code (skills, CLAUDE.md, hooks), o Codex CLI (skills, config, sandbox, MCP), o polyskill e os próprios arquivos do kit. Cada item sai em uma de três categorias, e o script termina com código 1 se faltar algo essencial, o que serve pra automatizar.

doctor.sh somente leitura [ok] [aviso] [FALTA] segue em frente · git, python3, claude, codex funciona com limitação · sem MCP, sem import essencial · vem com o comando pra resolver exit 0 ou 1 automatizável

Da esquerda pra direita: o doctor examina cada item e o classifica em ok, aviso ou falta. Só o vermelho muda o código de saída, então um script de CI pode barrar a migração quando falta algo essencial.

💻 Rode o diagnóstico

Objetivo: saber, em 2 segundos, se falta algo antes de auditar.

scripts/doctor.sh
echo "exit=$?"

Como verificar: a última linha diz Pronto. Próximo passo: scripts/audit.sh e exit=0. Se disser Faltam itens essenciais, corrija o que está em [FALTA] e rode de novo.

Esta é a saída real na máquina onde o kit foi construído, em 2026-09-14. Repare que os dois avisos não impedem nada: só dizem que skills dependentes de MCP não vão funcionar no Codex até você registrar o servidor, e que o Codex CLI não tem o comando de import (o "um clique" é só no app desktop).

== Sistema ==
  [ok]     Linux aarch64, shell bash 5.2.21(1)-release
  [ok]     git 2.43.0
  [ok]     python3 3.12.3
  [ok]     node v24.13.0
== Claude Code (fonte) ==
  [ok]     claude 2.1.270 (Claude Code)
  [ok]     ~/.claude/skills: 117 skills
  [ok]     ~/.claude/CLAUDE.md existe (72 linhas)
  [ok]     settings.json: 2 hooks, 7 plugins
== Codex CLI (destino) ==
  [ok]     codex codex-cli 0.154.0
  [ok]     /home/<usuario>/.codex/skills: 27 skills
  [ok]     /home/<usuario>/.agents/skills: 29 skills
  [ok]     config.toml: sandbox_mode=danger-full-access
  [aviso]  nenhum MCP no Codex: skills marcadas 'adaptador' só funcionam após 'codex mcp add'
  [aviso]  Codex CLI sem comando import (o import 'um clique' é só no app desktop); use os scripts deste kit
== polyskill (passo 4) ==
  [ok]     polyskill 0.1.0
== Este kit ==
  [ok]     scripts/audit.sh
  [ok]     scripts/adapt-instructions.sh
  [ok]     scripts/init-core.sh
  [ok]     scripts/sync-skills.sh
  [ok]     scripts/readback-test.sh
  [ok]     template/AGENTS.md
  [ok]     prompts/01-migrate-claude.md
  [ok]     pasta gravável (relatorios/ será criada aqui)

Pronto. Próximo passo: scripts/audit.sh
exit=0

✓ O que o doctor faz

  • Lê versões e pastas; nunca escreve.
  • Diz o comando pra resolver cada falta.
  • Avisa se o AppArmor vai quebrar o sandbox do Codex.
  • Marca runtime ausente como aviso, não como erro.

✗ O que ele NÃO faz

  • Instalar Claude, Codex ou polyskill por você.
  • Editar config.toml ou settings.json.
  • Inventariar skill por skill (isso é o audit).
  • Garantir que uma sessão vai ler seus arquivos (isso é o readback).

Conceitos-chave

[ok]

Item presente e no estado esperado.

[aviso]

Funciona, mas com limitação conhecida.

[FALTA]

Essencial ausente; muda o código de saída pra 1.

Código de saída

0 = pronto; 1 = corrija antes. Serve pra CI.

3

🔍 audit.sh: inventário somente leitura

Se o doctor pergunta "está pronto?", o audit pergunta "o que existe?". Ele lê as duas casas, ~/.claude e ~/.codex, conta skills, comandos, subagentes, hooks, plugins e MCP, e produz um relatório em Markdown com a matriz origem → destino: cada skill que só existe no Claude recebe uma classificação. É exatamente o passo 2 do Prompt A ("Inventory the working system"), automatizado.

~/.claude 117 skills · CLAUDE.md · hooks ~/.codex 27 skills · config.toml audit.sh comm + grep por SKILL.md reutilizável · 72 adaptador · 15 nativo · 2 não resolvido · 1 relatorios/ auditoria-*.md

O audit compara as listas de skills das duas casas (à esquerda), passa cada skill exclusiva do Claude por uma heurística de grep (no centro) e grava a matriz em quatro classes (à direita). Os números são desta máquina em 2026-09-14: 89 skills só no Claude.

💻 Rode a auditoria

Objetivo: gerar o relatório em relatorios/auditoria-<data>.md com a matriz de skills.

scripts/audit.sh
# Relatório: relatorios/auditoria-2026-09-14.md
#   reutilizável:  72
#   adaptador:     15
#   nativo:        2
#   não resolvido: 1

Como verificar: a soma das quatro linhas tem que bater com "Só no Claude" dentro do relatório (aqui, 72+15+2+1 = 90 linhas de tabela, 89 skills mais 1 sem SKILL.md). Se não bater, veja o tópico 5.

💡 Dica prática

Rode o audit antes E depois de cada rodada de migração e compare os dois relatórios com diff. É o jeito mais barato de ver o que mudou de verdade, sem confiar na memória de ninguém.

Conceitos-chave

Inventário

Lista do que existe, com origem e quantidade.

Gap

O que está em um runtime e não no outro.

Matriz origem → destino

Cada ativo com sua classificação e o que fazer.

Relatório datado

Evidência que dá pra comparar amanhã.

4

📊 Ler a matriz de skills

A matriz é uma heurística por grep, não um veredito. O audit abre o SKILL.md de cada skill exclusiva do Claude e procura pistas: menção a ferramenta MCP (mcp__, magnific, heygen) vira adaptador; menção a AskUserQuestion, subagentes ou plugins do Claude também vira adaptador; menção a hook (SessionStart, PreToolUse) vira nativo; o resto é reutilizável, ou seja, Markdown e scripts comuns que o Codex lê igual.

72

Reutilizável

Porta via polyskill sem alteração. Ex.: formato-curso-v5, roteirista-inema, video-explicativo, pixflow-motion, inemaref-serie.

15

Adaptador

Depende de MCP ou plugin do Claude. Só funciona no Codex depois de codex mcp add. Ex.: avatar-heygen-nei, heygen-cli, espiona-ads, ugc-seedance25, website-intelligence, as 8 variantes de printing-press.

2

Nativo

Depende de hook SessionStart, que o Codex não tem. fable-mindset e silver-platter viram texto no AGENTS.md.

1

Não resolvido

inemaref-referencias: pasta sem SKILL.md. Decida à mão: arquivar ou completar.

✓ Como usar a matriz

  • Comece pelas reutilizáveis mais usadas; vitória rápida.
  • Agrupe as de adaptador pelo MCP que exigem.
  • Abra 3 ou 4 SKILL.md por amostragem pra conferir a heurística.

✗ Erros comuns

  • Tratar "reutilizável" como "testado": é só formato.
  • Portar as 72 de uma vez; faça lotes de 10.
  • Esquecer que subagentes e plugins nem entram na matriz: não migram.

Conceitos-chave

Heurística

Regra prática por grep; acerta na maioria, revise o resto.

Reutilizável

Markdown e scripts comuns: porta sem mudar.

Adaptador

Precisa de MCP ou equivalente no destino.

Nativo

Preso a um evento do runtime; vira texto ou fica.

5

🛡️ Sandbox do Codex e AppArmor: a falha real

O Codex CLI roda comandos dentro de um sandbox feito com bwrap (bubblewrap), que isola o processo usando user namespaces do Linux. Em Ubuntu recente, o AppArmor restringe esses namespaces pra processos sem privilégio, e o bwrap morre na hora com loopback: Failed RTM_NEWADDR: Operation not permitted. Nada roda, nem um ls. Foi a primeira falha real do kit, e a correção foi de uma linha.

⚠️ O que aconteceu

O primeiro readback no Codex (módulo 2.5) forçava -s read-only na chamada. O sandbox tentou subir, o AppArmor barrou, e o Codex respondeu "não consegui ler nenhum arquivo". A sessão inteira foi perdida.

bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted
1

Diagnosticar

sysctl kernel.apparmor_restrict_unprivileged_userns retorna 1. O doctor já checa isso e avisa.

2

Decidir

Máquina pessoal confiável: desligar o sandbox no config do Codex. Máquina compartilhada: liberar o namespace no sysctl (exige root) e manter o sandbox.

3

Corrigir a menor coisa

No kit: remover o -s read-only do script e respeitar o sandbox_mode do config. Registrado em FALHAS.md como prompt e infra.

💻 Conferir e ajustar o sandbox

Objetivo: garantir que o Codex consegue executar comandos nesta máquina.

# 1. o AppArmor restringe user namespaces?
sysctl -n kernel.apparmor_restrict_unprivileged_userns

# 2. se retornou 1 e a máquina é só sua, no ~/.codex/config.toml:
sandbox_mode = "danger-full-access"

# 3. teste rápido
codex exec --skip-git-repo-check "rode 'echo sandbox-ok' e responda só a saída"

Como verificar: a resposta contém sandbox-ok. Se aparecer bwrap na saída, o config não foi lido: confira o caminho e a grafia da chave.

Novo aqui? "Sandbox" é uma caixa isolada onde um programa roda sem acesso ao resto do sistema. "AppArmor" é o módulo de segurança do Linux que decide o que cada programa pode fazer. danger-full-access desliga a caixa: o Codex passa a ter o mesmo poder que você no terminal. Aceitável em máquina pessoal, perigoso em servidor compartilhado.

Conceitos-chave

bwrap

Bubblewrap, o isolador que o Codex usa por padrão.

User namespace

Recurso do kernel que o AppArmor pode bloquear.

sandbox_mode

Chave do config.toml; scripts não devem sobrescrever.

Menor correção

Uma flag removida, não um script reescrito.

6

📄 O relatório e o que fazer com ele

O audit deixa um arquivo em relatorios/auditoria-<data>.md com seis seções: versões e raízes, gap de skills com a matriz, comandos e subagentes e hooks e plugins, hooks do Codex, MCP (só nomes, nunca valores de chave) e uma seção "não rodado" que lembra que nenhum comportamento foi testado. Esse arquivo é a evidência do Prompt A: você entrega a matriz, não uma promessa.

📊 As seis seções do relatório

  • 1.Versões e raízes: claude, codex, polyskill, contagens por pasta, se existe import nativo.
  • 2.Skills: quantas nos dois, quantas só no Claude, e a matriz linha a linha.
  • 3.Comandos, subagentes, hooks, plugins, runbooks, CLAUDE.md, memória: destino e classificação de cada um.
  • 4.Hooks do Codex hoje: quais eventos já têm handler.
  • 5.MCP: nomes registrados em cada lado, sem valores.
  • 6.Não rodado: o lembrete de que isso é inventário, não prova.

💻 Extrair só o que precisa

Objetivo: tirar do relatório a lista de skills de adaptador pra planejar os MCP.

grep '| adaptador |' relatorios/auditoria-<data>.md | cut -d'|' -f2
# avatar-heygen-nei, heygen-cli, heygen-mcp, espiona-ads, ...

Como verificar: a lista tem 15 nomes nesta máquina. Troque <data> pela data do seu relatório.

💡 Dica prática

Uma vez tive o resumo do audit somando 94 quando o gap era 89. O grep contava linhas da seção 3 (subagentes, hooks) junto com a seção 2. Menor correção: restringir o grep à seção 2.1. Está no FALHAS.md como "prompt". Se os seus números não fecharem, desconfie do contador antes de desconfiar dos dados.

Conceitos-chave

Evidência

Arquivo datado que qualquer um pode reler.

Sem segredos

O relatório cita nomes de MCP, nunca chaves.

Não rodado

Inventário não é teste; a prova vem no 2.5.

Diff entre rodadas

Compare relatórios pra medir progresso real.

Auto-checagem (opcional): o audit classificou uma skill como "reutilizável". O que isso garante?

🎯 Resumo do módulo

Clonar o kit — seis scripts, prompts e template, sem instalação global.
doctor.sh — ok, aviso ou falta; código de saída pra automatizar.
audit.sh e a matriz — 89 só no Claude: 72 reutilizáveis, 15 adaptador, 2 nativo, 1 não resolvido.
Sandbox e relatório — a falha do bwrap e sua correção de uma linha; o relatório é evidência, não prova.

Próximo módulo:

2.2 — CLAUDE.md → AGENTS.md: portátil de um lado, resíduo do outro