MÓDULO 1.4

📁 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.

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

📄 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
meu-projeto/ README.md para pessoas AGENTS.md para agentes · ordem de leitura CLAUDE.md @AGENTS.md + resíduo context/overview · state · sources · decisions tasks/current.md handoffs/latest.md .agents/skills/skills canônicas scripts/check.sh tudo dentro do projeto · Markdown comum · nada depende de plugin

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

README.md

Onboarding humano. Explica.

AGENTS.md

Instruções concisas para agentes. Ordena.

Ordem de leitura

Lista explícita no topo do AGENTS.md.

@AGENTS.md

Primeira linha do CLAUDE.md: importa o portátil.

2

🧭 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

overview.md

"O que é isto?" Estável, com fatos datados.

current-state.md

"Como está agora?" Muda toda sessão.

Fato verificado

Tem fonte e data. Sem isso é hipótese.

Cabeçalho de nota

ID, escopo, fonte, data, status, revisar em.

3

🔗 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

IDFonteTipoDataEscopoRefresh
S1docs/migrar-claude-para-codex...mdexport local2026-09-13filosofiamanual
S3docs/mega-prompts.pdfexport local2026-09-13prompts A/Bmanual
S4relatorios/auditoria-*.mdgerado por scriptcada rodadamáquina localrodar script
S5wifi/DIAGNOSTICO-CLAUDE-CODEX...mddiagnóstico2026-09-14máquina localrodar 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

sources.md

Tabela de proveniência com regra de refresh.

decisions/

Uma decisão datada por arquivo, com status.

Proveniência vence timestamp

Conflito se resolve pela fonte, não pela data maior.

Revogar, não apagar

O histórico de decisões é parte do contexto.

4

🎯 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.

1

Humano define

Objetivo, dono e critério de pronto são escritos por quem manda no projeto. O agente pode propor, não decidir.

2

Agente marca

Durante a sessão, o agente atualiza "próxima ação" e "bloqueios" conforme avança, e registra o que rodou.

3

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

tasks/current.md

O trabalho de agora, não o histórico.

Dono

Quem decide objetivo e critério.

Critério de pronto

Verificável por comando, não por opinião.

Próxima ação concreta

O primeiro comando, com caminho.

5

🔁 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.

1 · AGENTS.md regras + ordem 2 · overview.md o que é 3 · current-state como está 4 · tasks/current o que fazer 5 · handoffs/latest de onde continuar fim da sessão: novo handoff → a próxima sessão recomeça pelo AGENTS.md

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

Projeto e escopo
o que esta sessão cobriu
Objetivo atual
aponta para tasks/current.md
Estado aceito
o que está confirmado, com commit
Arquivos alterados
caminhos, não descrições vagas
Checks rodados e resultado
passou / falhou / não rodado
Perguntas abertas
o que só o dono decide
Próxima ação exata
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

handoffs/latest.md

Sempre o mais recente; a próxima sessão começa aqui.

/handoff e /prime

Escrever ao fechar, ler ao abrir.

Viaja entre provedores

Claude escreve, Codex retoma, e vice-versa.

Sem JSONL

O resumo estruturado substitui a releitura do log bruto.

6

🧩 .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.md no Claude Code (global e do projeto).
  • AGENTS.md no 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.md do 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.sh confere que os sete arquivos obrigatórios existem e não estão vazios: [ok] ou [FALTA].
  • O readback-test.sh prova que o agente leu, e não só que o arquivo existe.

Conceitos-chave

.agents/skills/

Skills canônicas do projeto; o Codex já procura aqui.

scripts/check.sh

Verificação mínima: arquivos existem e não estão vazios.

Convenção

Nome combinado; vira comportamento só por instrução.

Auto-load

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

README vs AGENTS.md — um explica para pessoas, o outro ordena para agentes, com ordem de leitura no topo.
context/ — overview (o que é, com fatos datados), current-state (como está), sources (de onde veio) e decisions (o que foi decidido, nunca apagado).
tasks/current.md — objetivo, dono, critério de pronto verificável e próxima ação concreta.
handoffs/latest.md — fecha a sessão e abre a próxima em qualquer provedor.
Convenção não é auto-load — só CLAUDE.md e AGENTS.md carregam sozinhos; o resto o AGENTS.md manda ler, e o readback prova.

Próximo módulo:

1.5 — Donos da informação: fato, preferência, hipótese, decisão