🪄 Prompt: conversão Claude → Codex
Refinamento do prompt mágico do módulo 2.1, com bullets numerados explícitos pra forçar a ordem.
Construí este projeto com Claude Code. Migre pra também funcionar no Codex CLI.
Antes de mexer em nada:
1. Pesquise documentação atual do Codex CLI (AGENTS.md, config.toml, agents TOML)
2. Pesquise como funciona @import no Claude Code
Depois faça em ordem (mostre diff antes de aplicar cada):
3. Crie AGENTS.md com conteúdo UNIVERSAL do CLAUDE.md (sem hooks, sem regras temporárias)
4. Refatore CLAUDE.md pra começar com @AGENTS.md + só seções Claude-only
5. Crie .codex/config.toml com project_doc_fallback_filenames=["CLAUDE.md"]
6. Para cada .claude/agents/*.md → .codex/agents/*.toml (corpo markdown vira developer_instructions)
7. Symlink .agents/skills → .claude/skills (uma fonte só)
8. Documente em README que hooks não têm equivalente no Codex
Não mexa em: src/, tests/, package.json. Pare se encontrar conflito.📨 Prompt: session handoff
Crie HANDOVER.md (substituindo o atual se existir) com SOMENTE 5 seções:
## Objetivo
1 frase com o que estamos tentando fazer.
## Status atual
Bullets curtos do que está pronto, em progresso, falhando.
## Active files
Lista de arquivos relevantes com 1 linha de descrição cada.
## Decisões
Decisões já tomadas + WHY de cada (importante: nunca omitir o porquê).
## Próximo passo
1 ação concreta imediata.
Limite: 60 linhas. Sem prosa. Sem histórico de tentativas."Limite 60 linhas" e "sem prosa" são as instruções que mantém o handoff colável. Sem elas você ganha um wall of text.
🔍 Prompt: auditoria via subagent
Auditoria pesa muito no context. Solução: subagent fresh com output limitado.
Spawn um subagent (Claude: invoke audit-agent; Codex: spawn audit) com a task:
"Audite todo o projeto e identifique:
1. Arquivos não importados em lugar nenhum (dead modules)
2. Funções sem caller no projeto (dead functions)
3. Deps em package.json não usadas no código
4. TODOs/FIXMEs com mais de 30 dias
5. Skills duplicadas entre .claude/skills/ e .agents/skills/
Retorne SOMENTE uma punch list markdown de até 20 itens, priorizada.
NÃO inclua paths completos exceto se essencial.
NÃO retorne arquivos lidos nem trechos de código.
Formato: '- [tipo] descrição (severidade)'"Por que funciona: subagent lê 50 arquivos no context dele, devolve 20 linhas. Seu context principal: 20 linhas em vez de 5.000.
🔧 Prompt: destrava-bug (cross-agent)
Cola no Codex quando Claude trava (ou vice-versa). A frase mágica: "Não confie nas tentativas anteriores".
Estou travado nesse bug. Aqui está o handoff da sessão anterior:
[cola HANDOVER.md aqui]
Importante:
- NÃO confie nas tentativas anteriores (estão na seção Evitar — apenas evite-as)
- Reproduza o erro do zero, sem assumir nada
- Isole a causa raiz (não sintoma)
- Propõe correção como HIPÓTESE com evidência
- NÃO aplique a correção antes de eu validar a hipótese
Quero seu raciocínio antes do diff."NÃO aplique antes de eu validar" evita o cenário em que o novo agente faz fix errado e você gasta mais tempo desfazendo do que se tivesse insistido no anterior.
🧹 Prompt: limpa-AGENTS.md / CLAUDE.md
Arquivo de instruções incha. A cada 3 meses, audite.
Audite AGENTS.md (e CLAUDE.md se houver). Identifique:
1. Regras temporárias que viraram permanentes sem motivo
2. Histórico de bugs/PRs (deveria estar em git log, não aqui)
3. Conteúdo redundante com o README
4. Instruções que provavelmente nunca foram usadas
5. Decisões antigas que foram revertidas mas seguem no arquivo
Para cada item, classifique: KEEP / MOVE / DELETE.
Proponha versão enxuta no final (não substitua sem eu aprovar).
Mostre estatística: linhas antes vs depois."Não substitua sem aprovar" é o que separa audit útil de delete catastrófico. SEMPRE essa salvaguarda.
📐 Template: AGENTS.md universal
# AGENTS.md
## Project Overview
1 parágrafo do que é o projeto + 1 linha de "para quem".
## Build & Test
- Build: `pnpm build`
- Test: `pnpm test`
- Lint: `pnpm lint`
- Dev: `pnpm dev`
## Code Style
- TypeScript strict
- Prettier (config em .prettierrc)
- Imports ordenados: builtin > external > internal > relative
- Sem console.log em produção (usa logger/winston)
## Project Structure
- src/api: handlers HTTP
- src/services: lógica de negócio
- src/db: acesso a banco
- src/lib: utilitários
## Boundaries
- NÃO mexer em src/legacy/ (será removido)
- NÃO commitar .env, secrets/, *.local
- Migrações aplicadas em prod são imutáveis
## Decision Log
- 2026-03-15: Postgres pra idempotência (descartado Redis — não temos infra)
- 2026-04-02: Tailwind + shadcn (descartado MUI — peso e custom limitado)🔗 Template: CLAUDE.md com @import
@AGENTS.md
## Claude-only
### Hooks
- PreToolUse: ./scripts/pre-edit-check.sh
- PostToolUse: ./scripts/format.sh
- SessionStart: ./scripts/load-context.sh
### Permission levels
- defaultMode: acceptEdits
- bash: ask
- webfetch: deny
### Path-scoped
- src/payments/**: HUMAN review obrigatório, não acceptEdits
- migrations/**: read-only se já aplicada em prod
- secrets/**: deny absolutoResultado: CLAUDE.md fica fino. Atualiza AGENTS.md, Claude lê via @import. Codex (e outros) leem AGENTS.md direto. Nenhuma duplicação.
📋 Dicas: 5 erros de iniciante
✗ Erros
- 1Esperar paridade 1:1 (Codex sem hooks vai te decepcionar)
- 2Duplicar tudo em CLAUDE.md e AGENTS.md
- 3Deixar skills só em
.claude/skills/ - 4Usar slash commands Claude como se Codex tivesse
- 5Ignorar
project_doc_fallback_filenames
✓ Antídotos
- 1Aceita as diferenças, modela hooks como skills no Codex
- 2@import no CLAUDE.md
- 3Symlink ou skill em
.agents/skills/ - 4No Codex use
spawn - 5Config fallback no primeiro minuto
📚 Resumo
Próxima Trilha:
T3 Avançado — subagentes, limpar sessão, worktrees