15 pontos por GN⁺ 2026-01-31 | 4 comentários | Compartilhar no WhatsApp
  • Na avaliação voltada para a API do Next.js 16, o índice de documentação AGENTS.md incluído na raiz do projeto registrou maior precisão do que a abordagem baseada em skills
  • Skills são um tipo de pacote de conhecimento de domínio que o agente chama quando necessário, mas como a invocação é instável, a taxa de aprovação na configuração padrão ficou em 53%
  • Em contraste, o índice AGENTS.md compactado para 8 KB alcançou 100% de aprovação em todos os testes (Build, Lint, Test)
  • Essa abordagem mostrou resultados mais estáveis do que a invocação ativa devido à eliminação de pontos de decisão, disponibilidade constante e resolução de problemas de ordem
  • Mantenedores de frameworks podem incluir um índice de documentação compatível com a versão no AGENTS.md para aumentar a precisão da geração de código

Contexto do problema

  • Agentes de IA para programação têm a limitação de que os dados de treinamento são baseados em APIs antigas, o que dificulta lidar corretamente com frameworks mais recentes
    • Recursos do Next.js 16 como 'use cache', connection() e forbidden() não existem nos dados de treinamento anteriores do modelo
  • Por outro lado, em projetos com versões antigas, o modelo também pode sugerir APIs novas que na verdade não existem
  • Para resolver isso, foi testada uma abordagem de acesso à documentação compatível com a versão

Duas abordagens

  • Skills: um pacote em padrão aberto que reúne prompts, ferramentas e documentação, usado pelo agente quando necessário
  • AGENTS.md: um arquivo de contexto persistente localizado na raiz do projeto, sempre disponível em todos os turnos da conversa
  • As duas abordagens foram avaliadas em comparação com base na mesma documentação do Next.js

Limitações da abordagem com Skills

  • Na avaliação, em 56% dos testes a skill não foi chamada, e a taxa de aprovação padrão ficou em 53%, sem melhora
  • Em alguns itens, houve até pontuação pior que a linha de base (ex.: teste 58% vs 63%)
  • Isso foi apontado como um limite atual dos modelos, que ainda não conseguem usar ferramentas de forma estável

Experimento com instruções explícitas

  • Ao adicionar ao AGENTS.md uma instrução explícita dizendo “chame a skill antes de escrever código”, a taxa de aprovação subiu para 79%
  • No entanto, pequenas diferenças na formulação da instrução tiveram grande impacto no resultado
    • “Chame a skill primeiro” → o modelo ficou preso ao padrão da documentação e perdeu o contexto do projeto
    • “Explore o projeto e depois chame a skill” → resultado melhor
  • Por causa dessa fragilidade linguística, a confiabilidade em uso real continua baixa

Construção de uma avaliação confiável

  • Os testes iniciais tinham baixa confiabilidade por causa de prompts ambíguos e problemas de validação duplicada
  • Isso foi aprimorado com validação baseada em comportamento e testes focados em APIs do Next.js 16 ausentes do treinamento
  • Principais APIs testadas: connection(), 'use cache', cacheLife(), forbidden(), proxy.ts, cookies(), headers(), after(), refresh() etc.

Experimento com a abordagem AGENTS.md

  • O processo de escolha do agente foi removido, e o índice de documentação foi inserido diretamente no AGENTS.md
  • O índice não continha a documentação completa, mas sim uma lista de caminhos da documentação por versão
  • Instrução adicional:
    IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning for any Next.js tasks.
    • Isso orienta o modelo a priorizar raciocínio baseado em documentação em vez de dados prévios de treinamento

Resultado da avaliação

  • Com a inserção do índice no AGENTS.md, foi alcançada uma taxa de aprovação de 100%
    • Build, Lint e Test tiveram resultados perfeitos
  • Estatísticas comparativas:
    • Baseline 53%, Skill padrão 53%, Skill + instrução 79%, AGENTS.md 100%
  • Motivos pelos quais a abordagem de contexto passivo supera a invocação ativa
    1. Não há ponto de decisão — a informação está sempre presente
    2. Disponibilidade consistente — incluída no prompt do sistema em todos os turnos
    3. Elimina problemas de ordem — não depende da sequência de exploração da documentação

Solução para o problema de capacidade de contexto

  • O índice inicial tinha 40 KB, mas foi reduzido para 8 KB com compressão (queda de 80%)
  • Com uma estrutura separada por pipe (|), os caminhos e nomes de arquivos da documentação foram armazenados usando o mínimo de espaço
  • O agente lê apenas os arquivos necessários no diretório .next-docs/ para usar informações exatas da versão correta

Como aplicar

  • A configuração pode ser feita com uma única linha de comando
    npx @next/codemod@canary agents-md
    
  • Esse comando
    1. Detecta a versão do Next.js
    2. Baixa a documentação correspondente para .next-docs/
    3. Insere o índice compactado em AGENTS.md
  • Também funciona da mesma forma em agentes que reconhecem AGENTS.md, como o Cursor

Implicações para desenvolvedores de frameworks

  • Skills continuam úteis, mas para melhorar a precisão geral da geração de código, a abordagem com AGENTS.md é mais eficaz
  • Skills são mais adequadas para fluxos de trabalho voltados a tarefas específicas, como “upgrade de versão” e “migração para App Router”
  • Recomendações:
    • não esperar melhorias nas skills e usar AGENTS.md imediatamente
    • incluir apenas o índice da documentação para minimizar o contexto
    • validar com testes focados em APIs ausentes dos dados de treinamento
    • projetar a documentação com uma estrutura de busca detalhada
  • O objetivo é migrar do raciocínio centrado em pré-treinamento para o raciocínio baseado em recuperação, e o AGENTS.md é a forma mais estável de implementar isso

4 comentários

 
channprj 2026-01-31

Os agentes de programação com IA têm a limitação de não conseguir lidar com precisão com frameworks mais recentes porque os dados de treinamento se baseiam em APIs antigas.

Usando o Context7, esse problema acaba sendo resolvido até certo ponto.

https://context7.com

 
slowandsnow 2026-02-04

É porque o context7 é ineficiente, então usam os dois métodos acima...

 
channprj 2026-02-05

Entendo o que você quer dizer, mas ainda assim não me parece uma escolha tão ruim usar o context7 como apoio, em vez de ter que organizar e inserir um por um, toda vez, no AGENTS.md ou no Skills, os links da documentação mais recente de todos os frameworks/bibliotecas usados no momento.

Além disso, nem o GeekNews nem o texto da Vercel mencionam o context7. Estou deixando esta resposta porque me parece que o senhor interpretou o conteúdo meio passo à frente.

(Como observação, é um fato bem conhecido que um Skills ou AGENTS.md bem escritos podem economizar tokens, e eu também sei disso muito bem.)

 
GN⁺ 2026-01-31
Comentários do Hacker News
  • O modelo não é AGI. É apenas um gerador de texto, treinado para produzir efeitos como editar arquivos ou chamar ferramentas
    O modelo não usa skills por “entender” a habilidade do usuário, mas gera esse texto graças ao aprendizado por reforço (RL) baseado em exemplos criados por humanos e logs de uso
    O motivo de não usar skills sempre é que ainda não houve treinamento suficiente com esses casos. Forçar isso com RL pode até deixar o modelo mais burro
    No momento, estamos acumulando logs de uso de skills para que modelos futuros aprendam melhor quando devem usá-las
    O AGENTS.md é simplesmente contexto. O modelo foi treinado desde o início para seguir contexto

    • A diferença entre AGENTS.md e skills, no fim das contas, é uma questão de como isso é inserido no contexto
      O frontmatter das skills também acaba incluído no contexto, então, se AGENTS.md funciona melhor, isso se deve à diferença na forma como a informação da skill é extraída e injetada
      Alguns agentes podem usar modelos menores (ex.: Haiku) para decidir quais informações de skill devem ser passadas a modelos maiores (ex.: Sonnet, Opus)
      No fim, o ponto central é quais informações entram no “prompt bruto”
    • Não é AGI. Na prática, está mais para autocompletar turbinado
      É útil, mas não é perfeito. A própria tecnologia GPT parece já ter entrado em uma fase de estagnação de desempenho
      O que deve melhorar daqui para frente são sistemas auxiliares como skills. Mas a funcionalidade de skills, como está implementada hoje, é inferior a usar AGENTS.md diretamente
    • Também fiz experimentos parecidos. Estou testando carregar skills relacionadas antecipadamente no prompt de sistema, e no prompt do usuário fazer com que sejam carregadas quando necessário
    • Houve uma pergunta sobre o que é RL
    • Houve também um comentário de humor comparando a frase “o modelo não é AGI” à polêmica do nome GNU/Linux
  • Na avaliação, houve um resultado mostrando que, em 56% dos casos, as skills não foram chamadas nem uma vez. Ou seja, o modelo tinha a documentação, mas não a usou. Daí a piada: “Passou no teste de Turing...”

    • Houve uma resposta espirituosa: “A IA também RTFM (não lê o manual)”
    • Eu também ri, mas, falando sério, humanos também costumam ser pouco confiáveis
      A diferença é que a IA aceita instruções de correção sem ego
      Ainda não está no nível de um desenvolvedor sênior, mas tende a seguir instruções melhor que um júnior
  • A descoberta principal é que a compressão (compression) de ponteiros para documentos é eficaz
    Para humanos é difícil de ler, mas para LLMs é uma estrutura de referência direta e eficiente
    No futuro, em vez de heurísticas como agents.md/claude.md/skills.md, é bem possível que um formato de índice comprimido sempre carregado se torne padrão
    Também seria possível reaproveitar suítes de teste de API para validar o desempenho de código gerado por LLM
    À medida que a adoção de LLMs crescer, bibliotecas e APIs também terão de evoluir para isso

    • Outra lição é que “explorar o projeto primeiro e depois chamar a skill” funciona melhor do que “use a skill de qualquer jeito”
      No Antigravity (= baseado em GEMINI.md), foi configurado para seguir regras do AGENTS.md, mas isso foi ignorado
      Em vez disso, o prompt “verifique se o projeto tem AGENTS.md” sempre funcionou
      É um fenômeno curioso, parecido com a época em que “let’s think step by step” induzia chain-of-thought
    • Teve também quem dissesse que chamar isso de “compressão” não seria, na prática, só minify
    • Houve a opinião de que, se usassem quebras de linha em vez de pipes, seria mais fácil de ler
  • Se AGENTS.md for incluído diretamente no prompt de sistema, ele sempre entra no contexto
    Mas incluir todas as skills toda vez é desperdício. Por isso, é necessária uma abordagem de carregar só quando preciso, como o advanced tool use da Anthropic
    No fim, é uma questão de equilíbrio entre contexto e custo. Se houver folga, comprimir isso em AGENTS.md é eficiente

    • Skills também acabam sendo declaradas dentro do contexto. Parece que simplesmente comprimi-las em AGENTS.md funciona melhor
    • A Vercel parece ter confundido skills com configuração de contexto. As duas têm propósitos totalmente diferentes, então ambas devem ser usadas juntas
    • É por isso também que a abordagem RLM funciona bem. A estrutura coloca no contexto apenas a informação necessária e deixa o restante no ambiente
      Esse tipo de agente com autogerenciamento de contexto parece que vai evoluir bastante este ano
    • No fim, os dois são necessários. Parte deve ser forçada no contexto (index/sparknotes), e parte precisa ser adicionada dinamicamente com base em exploração e busca
    • Usuários individuais podem apenas editar o prompt de sistema, mas, em equipes, é preciso usar skills para manter padrões como estilo de código
      A taxa de aderência do Claude às skills é baixa
  • Também estou trabalhando em algo parecido. Quero avaliar como a estrutura de scaffolding do projeto afeta os resultados no Claude Code/Opencode
    Mas é difícil comparar porque a forma de teste da Vercel não está clara

  • AGENTS.md não é algo completamente diferente de skills, e sim uma forma simplificada de skill
    O essencial é a qualidade do design da skill, isto é, minimizar o número de etapas até que a IA encontre a informação correta
    Quanto menos etapas, menor o acúmulo de erros

    • Eu também separo em dois tipos
      1. o que é inserido à força no prompt de sistema com base em regras
      2. o que o agente explora quando precisa
        E, para reduzir desperdício de tokens, arquivos grandes eu coloco apenas uma vez no prompt de sistema
  • Sempre que vejo comparações de prompt engineering em blogs, fico curioso para saber se foi executado uma vez só ou várias vezes
    LLMs não produzem resultados consistentes nem com a mesma entrada

    • É frustrante ver esse tipo de resultado não determinístico sendo apresentado como ciência
      Muitas vezes dá a sensação de que dados anedóticos estão sendo embalados como se fossem ciência
    • Eu sempre executo várias vezes e calculo intervalos de confiança
      Mas, quando se faz benchmark com cuidado, quase ninguém lê; quando se faz de qualquer jeito, o tráfego do blog aumenta 9 vezes
      O problema é a estrutura de incentivos distorcida
  • Há métodos melhores que AGENTS.md
    Uma opção é criar uma pasta .context, colocar nela links simbólicos para documentos do projeto (README, documentação de dependências etc.) e fazer com que isso sempre seja carregado no contexto
    Assim, a LLM já começa com todas as informações de que precisa, o que pode trazer melhora de desempenho e redução de custo

    • Mas a documentação de dependências não faz tanta diferença. Em vez disso, colocar o próprio código-fonte em uma pasta _vendor é bem mais útil
      A LLM pode analisar o código diretamente e entender como ele funciona
    • Também houve a opinião de que carregar toda a documentação sempre é ineficiente. Seria melhor apenas indicar a localização em Claude.md ou Agents.md e fazer a leitura quando necessário
    • Não se deve inflar o contexto sem necessidade. Em vez disso, comprimir só um índice da documentação é mais eficiente
    • Colocar arquivos grandes toda vez é desperdício de tokens. O blog do Claude Code também fazia o mesmo alerta
  • Esta é a experiência que obtive ao criar meu agente customizado

    1. Usei como referência as instruções de extração do Claude Code
    2. Carrego AGENTS.md automaticamente para sumário e resumo (sparknotes)
    3. Gerencio arquivos Markdown por tema como skills
    4. MCP e skills são conceitualmente parecidos, então o mais importante é criar boas ferramentas
    5. Continuo experimentando, me divertindo e melhorando
      Quando coloquei read/write_file no estado e passei a exibi-lo no prompt de sistema, funcionou muito melhor
      Agora estou tentando provar isso com avaliação quantitativa (evals). Pela sensação, o desempenho está muito bom