📁 Anatomia de um workspace portátil
AGENTS.md, context/, tasks/, handoffs/. O módulo anterior disse que a camada durável é Markdown comum dentro do projeto. Este módulo mostra exatamente quais arquivos, o que vai em cada um, quem os lê e em que ordem. É a árvore que o kit instala com o init-core.sh e que os mega-prompts mandam construir. Nomes são convenção: nada disso é carregado sozinho, e você vai ver como resolver isso.
📄 README.md vs AGENTS.md: humano vs agente
Um workspace portátil começa com dois arquivos na raiz, e é fácil confundi-los. O README.md é para gente: onboarding humano, como rodar, como testar, o que tem em cada pasta. O AGENTS.md é para agentes: instruções concisas, regras estáveis e, no topo, uma ordem de leitura explícita que diz ao agente quais arquivos abrir antes de agir.
Essa é a árvore completa que o kit propõe. Você vai reconhecer cada pasta ao longo deste módulo:
meu-projeto/
├── README.md # onboarding humano
├── AGENTS.md # instruções + ordem de leitura (Codex, Gemini, GLM)
├── CLAUDE.md # "@AGENTS.md" + resíduo específico do Claude
├── context/
│ ├── overview.md # o que é, fatos verificados, preferências, hipóteses
│ ├── current-state.md # o que funciona e o que está pendente
│ ├── sources.md # de onde veio cada informação + regra de refresh
│ └── decisions/ # uma decisão aceita por arquivo
├── tasks/
│ └── current.md # objetivo, dono, critério de pronto, próxima ação
├── handoffs/
│ └── latest.md # continuação para a próxima sessão
├── .agents/
│ └── skills/ # skills canônicas do projeto
└── scripts/
└── check.sh # verificação mínima
A caixa grande é o projeto. Na primeira linha, os arquivos de entrada: README para pessoas, AGENTS.md para agentes, e o CLAUDE.md tracejado porque só importa o AGENTS.md. Na segunda linha, as cinco pastas portáteis que o resto do módulo explica.
Novo aqui? "README" é o arquivo que todo repositório mostra na página inicial; é escrito para uma pessoa que chega sem contexto. "AGENTS.md" é uma convenção adotada por Codex, Gemini e outros: um arquivo de instruções que o agente lê ao iniciar no projeto. Os dois podem dizer coisas parecidas, mas o README explica e o AGENTS.md ordena.
✓ Vai no AGENTS.md
- ✓Ordem de leitura: "leia 1) este arquivo, 2) context/overview.md, 3) current-state, 4) tasks/current.md, 5) handoffs/latest.md".
- ✓Regras estáveis: autor de commit, versionamento, onde ficam as keys, o que nunca fazer.
- ✓Tabela de donos: quem atualiza cada arquivo e quando.
✗ Não vai no AGENTS.md
- ✗Tutorial de instalação e prosa longa: isso é README.
- ✗Estado atual e tarefa em andamento: mudam toda sessão, têm arquivo próprio.
- ✗Qualquer coisa específica de um runtime (plugin, hook, menu interativo): isso é resíduo do CLAUDE.md.
Conceitos-chave
Onboarding humano. Explica.
Instruções concisas para agentes. Ordena.
Lista explícita no topo do AGENTS.md.
Primeira linha do CLAUDE.md: importa o portátil.
🧭 context/overview.md e current-state.md
A pasta context/ é o conhecimento durável do projeto. Os dois primeiros arquivos respondem a perguntas diferentes. O overview.md responde "o que é isto?": o que o projeto faz, para quem, os fatos verificados (cada um com fonte e data), as preferências do dono e as hipóteses ainda não confirmadas. Muda devagar. O current-state.md responde "como está agora?": o que funciona, o que está quebrado ou pendente, o que mudou desde o overview. Muda a cada sessão.
Novo aqui? "Overview" é a visão geral estável. "Current state" (estado atual) é a fotografia do momento. Separá-los evita o erro clássico de um arquivo só que mistura "o projeto é X" com "hoje o build está quebrado": o agente não sabe o que ainda vale. Fato verificado é aquele que tem fonte e data ao lado; sem isso, é hipótese.
overview.md
# Overview
- ID: overview | Escopo: projeto
- Fonte: | Data de observação:
- Status: rascunho | Revisar em:
## O que é
## Para quem
## Fatos verificados (com fonte e data)
## Preferências (do dono do projeto)
## Hipóteses (não verificadas)
Cabeçalho com ID, escopo, fonte, data e status. É o que permite dizer se o arquivo ainda vale.
current-state.md
# Estado atual — AAAA-MM-DD
- Última sessão:
- O que funciona:
- O que está quebrado / pendente:
- Fatos que mudaram desde o overview:
Curto e datado. Se um fato daqui se estabiliza, ele sobe para o overview; se um fato do overview muda, o current-state avisa.
📊 Exemplo real: o overview do próprio kit (2026-09-13)
- •Fato verificado: "Codex CLI 0.154.0 não tem comando import; o import 'um clique' é do app desktop."
- •Fato verificado: "Claude Code 2.1.270 com 116 skills; Codex com 27."
- •Hipótese: "A classificação heurística de 71 skills como reutilizável está correta na maioria; precisa amostragem."
- •Repare: o fato tem versão e data; a hipótese diz o que falta para virar fato.
Conceitos-chave
"O que é isto?" Estável, com fatos datados.
"Como está agora?" Muda toda sessão.
Tem fonte e data. Sem isso é hipótese.
ID, escopo, fonte, data, status, revisar em.
🔗 context/sources.md e context/decisions/
Dois arquivos que quase ninguém cria e que resolvem o problema mais comum de contexto: "qual das várias versões desta informação é a certa?" O sources.md é uma tabela de de onde veio cada coisa: caminho ou URL, tipo (arquivo local, export datado ou conexão viva), data, escopo e a regra de refresh. A pasta decisions/ guarda uma decisão aceita por arquivo, com contexto, a decisão em si e as consequências.
sources.md do kit, como está hoje
| ID | Fonte | Tipo | Data | Escopo | Refresh |
|---|---|---|---|---|---|
| S1 | docs/migrar-claude-para-codex...md | export local | 2026-09-13 | filosofia | manual |
| S3 | docs/mega-prompts.pdf | export local | 2026-09-13 | prompts A/B | manual |
| S4 | relatorios/auditoria-*.md | gerado por script | cada rodada | máquina local | rodar script |
| S5 | wifi/DIAGNOSTICO-CLAUDE-CODEX...md | diagnóstico | 2026-09-14 | máquina local | rodar doctor/audit |
Quando duas informações conflitam, você olha a tabela: qual tem fonte mais confiável e regra de refresh mais recente. Não quem tem o timestamp maior.
Novo aqui? "Sources" (fontes) é o registro de proveniência: sem ele, um fato é só uma frase solta. "Decisions" (decisões) são registros curtos e datados do que foi decidido e por quê; o padrão vem dos ADRs, "architecture decision records", usados em engenharia. "Export datado" é uma cópia de um documento externo tirada numa data; "conexão viva" é quando o agente vai buscar no sistema original a cada vez.
✓ Uma boa decisão em decisions/
- ✓Nome datado:
2026-09-13-docs-fora-do-git.md. - ✓Status explícito: proposta, aceita ou revogada.
- ✓Contexto, decisão e consequências em três blocos curtos.
- ✓Nunca apagada: se mudar, uma nova decisão a revoga.
✗ O que não funciona
- ✗Decisão enterrada no meio de um chat de 300 turnos.
- ✗Editar a decisão antiga no lugar: perde o histórico de por que mudou.
- ✗Sem status: o agente não sabe se ainda vale ou se é só ideia.
- ✗Fonte sem data: impossível saber se envelheceu.
Conceitos-chave
Tabela de proveniência com regra de refresh.
Uma decisão datada por arquivo, com status.
Conflito se resolve pela fonte, não pela data maior.
O histórico de decisões é parte do contexto.
🎯 tasks/current.md: dono e critério de pronto
O texto original observa que muita gente fala de memória e handoff, mas esquece do trabalho atual. O tasks/current.md é isso: o que estamos fazendo agora, quem é responsável e qual o critério de pronto. Ele faz o agente entender não só o histórico, mas o que precisa acontecer nesta sessão. E é o arquivo que a pergunta 1 do readback ("qual o objetivo e o critério de aceite?") vai buscar.
Este é o tasks/current.md real do kit, no dia em que este curso foi escrito. Repare que cada linha responde a uma pergunta que um agente novo faria:
# Tarefa atual
- Objetivo: validar o piloto — skill `session-handoff` portada pro Codex
via polyskill e readback passando nos dois runtimes.
- Dono: Nei (decide piloto e skills); agente executa.
- Critério de pronto: `scripts/readback-test.sh . both` gera respostas que
citam AGENTS.md/tasks/handoffs em ambos; `scripts/sync-skills.sh drift`
sem DRIFT.
- Próxima ação concreta: Fase 0 do plano em
`~/projetos/wifi/DIAGNOSTICO-CLAUDE-CODEX-2026-09-14.md` —
`scripts/adapt-instructions.sh ~/.claude`, revisar, gravar
`~/.codex/AGENTS.md`, readback em `~/projetos/wifi`.
- Bloqueios: nenhum (publicação já feita; docs/ segue fora do git).
Novo aqui? "Critério de pronto" (ou critério de aceite) é a frase que permite dizer, sem discussão, se a tarefa acabou. Bom critério é verificável: "o comando X gera saída Y". Critério ruim é opinião: "está bom". "Dono" é quem decide; o agente executa, mas não muda o objetivo sozinho. "Próxima ação concreta" é o primeiro comando ou edição, não uma intenção.
Humano define
Objetivo, dono e critério de pronto são escritos por quem manda no projeto. O agente pode propor, não decidir.
Agente marca
Durante a sessão, o agente atualiza "próxima ação" e "bloqueios" conforme avança, e registra o que rodou.
Pronto só com evidência
A tarefa fecha quando o critério foi rodado e o resultado está no handoff. "Deve funcionar" não fecha nada.
Conceitos-chave
O trabalho de agora, não o histórico.
Quem decide objetivo e critério.
Verificável por comando, não por opinião.
O primeiro comando, com caminho.
🔁 handoffs/latest.md: a continuação
O handoff é o arquivo que fecha uma sessão e abre a próxima. O texto original descreve o fluxo: sessão → /handoff → Markdown → /prime → nova sessão. O comando de handoff analisa a sessão procurando decisões tomadas, tarefas inacabadas, próximos passos e caminhos de arquivo, e salva tudo em Markdown. Um arquivo chamado latest.md aponta sempre para o mais recente. O /prime lê esse contexto de volta. Assim você não fica procurando informação em arquivos JSONL, e o resumo viaja para qualquer provedor.
Leia da esquerda para a direita: a sessão nova abre o AGENTS.md, que manda ler os quatro seguintes em ordem, e chega ao handoff, em destaque, de onde continua. A seta tracejada de volta é o ciclo: ao fechar, escreve-se um handoff novo.
📝 As sete seções do template de handoff do kit
o que esta sessão cobriu
aponta para tasks/current.md
o que está confirmado, com commit
caminhos, não descrições vagas
passou / falhou / não rodado
o que só o dono decide
o comando que a próxima sessão roda primeiro
💡 Dica prática
Um handoff bom preserva as falhas não resolvidas e não afirma que mudanças não commitadas "estão disponíveis" em outro lugar. Quando o Claude fez o readback do próprio kit, ele apontou exatamente isso: o handoff dizia "commit inicial" enquanto seis arquivos estavam editados sem commit. Corrigiu-se o handoff, não a régua.
Conceitos-chave
Sempre o mais recente; a próxima sessão começa aqui.
Escrever ao fechar, ler ao abrir.
Claude escreve, Codex retoma, e vice-versa.
O resumo estruturado substitui a releitura do log bruto.
🧩 .agents/skills/, scripts/ e a regra da convenção
As duas últimas pastas guardam capacidade, não conhecimento. .agents/skills/ é onde ficam as skills canônicas do projeto (o Codex já procura ali; o Claude recebe cópia gerada). scripts/ guarda comandos reproduzíveis, como o check.sh que confere se os arquivos obrigatórios existem e não estão vazios. E aqui vem o aviso mais importante do módulo, direto do Prompt B: esses nomes são convenções; diga explicitamente a cada agente o que ler. Não presuma que eles carregam sozinhos.
Novo aqui? "Auto-load" (carregamento automático) é quando o runtime lê um arquivo sem ninguém pedir. Claude Code faz isso com CLAUDE.md; Codex, com AGENTS.md. Só. Uma pasta chamada context/ é bonita, mas nenhum agente a abre por conta própria. "Convenção" é um nome combinado entre humanos; vira comportamento só quando o AGENTS.md manda ler.
✓ Carrega sozinho
- ✓
CLAUDE.mdno Claude Code (global e do projeto). - ✓
AGENTS.mdno Codex (e no Gemini). - ✓Skills em
~/.claude/skills,~/.codex/skills,.agents/skills/: descobertas por nome.
✗ Não carrega sozinho
- ✗
context/,tasks/,handoffs/: só se o AGENTS.md mandar ler. - ✗
README.md: o agente pode nem abrir. - ✗Qualquer pasta bonita tipo
brain/,knowledge/,memory/sem instrução explícita.
⚠️ O erro a evitar
Montar a árvore inteira, ficar orgulhoso da estrutura e nunca testar se o agente a usa. O Prompt B é explícito: um diretório gerado não é prova de que um agente o lê. A prova é o readback (módulo 2.5): sessão nova, cinco perguntas, e as respostas citando AGENTS.md, tasks/current.md e handoffs/latest.md.
🔬 Como o kit resolve isso
- •O
AGENTS.mddo template abre com a frase: "Ordem de leitura para qualquer agente: 1) este arquivo, 2) context/overview.md, 3) context/current-state.md, 4) tasks/current.md, 5) handoffs/latest.md. Estes nomes são convenção deste repo, não são carregados automaticamente: leia-os." - •O
scripts/check.shconfere que os sete arquivos obrigatórios existem e não estão vazios:[ok]ou[FALTA]. - •O
readback-test.shprova que o agente leu, e não só que o arquivo existe.
Conceitos-chave
Skills canônicas do projeto; o Codex já procura aqui.
Verificação mínima: arquivos existem e não estão vazios.
Nome combinado; vira comportamento só por instrução.
Só CLAUDE.md e AGENTS.md. O resto, o AGENTS.md manda ler.
Auto-checagem (opcional): você criou context/overview.md e tasks/current.md num projeto. O Codex vai lê-los ao iniciar?
🎯 Resumo do módulo
Próximo módulo:
1.5 — Donos da informação: fato, preferência, hipótese, decisão