Communitygithub.com

aryashreep/ctx-audit

Audita arquivos de contexto de IA (AGENTS.md, memory.md) quanto à atualidade e custo de tokens. Sem dependências, funciona como CLI, GitHub Action e skill do Claude Code.

O que é ctx-audit?

O ctx-audit é uma ferramenta projetada para manter e verificar a integridade de arquivos de contexto de agentes de IA, como AGENTS.md e memory.md, em repositórios de código. Ele ajuda a evitar que agentes precisem redescobrir convenções do projeto, decisões passadas e a estrutura do código a cada sessão. A ferramenta oferece modos de operação como CLI, GitHub Action e skill para Claude Code, além de suporte a subcomandos para inicialização, instalação de hooks git e benchmarks de economia de tokens. Com verificações de frescor baseadas em commits e um sistema de status (FRESCO, DESATUALIZADO?, AUSENTE, etc.), o ctx-audit permite que desenvolvedores e agentes confiem nos arquivos de contexto apenas quando estão atualizados, economizando tempo e tokens.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add aryashreep/ctx-audit

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Auditoria de Contexto

Repositórios que adotam esta convenção mantêm um pequeno conjunto de arquivos persistentes para que agentes não precisem redescobrir as mesmas coisas a cada sessão: quais são as convenções do projeto (AGENTS.md), o que já foi decidido e por quê (memory.md) e, aproximadamente, como a base de código está organizada (.agent/graph.md). Esta skill verifica se esses arquivos existem e estão atualizados antes de você confiar neles ou antes de recorrer à varredura manual do repositório.

Frases de gatilho

Início de sessão / verificação de confiança

  • "me atualize sobre este repositório"
  • "o que você sabe sobre este projeto"
  • "devo confiar em AGENTS.md / memory.md"
  • "os arquivos de contexto estão atualizados"
  • "verificar contexto" / "auditoria de contexto"

Desatualização

  • "AGENTS.md está desatualizado" / "memory.md está desatualizado"
  • "quantos commits desde a última sincronização"
  • "meus arquivos de agente estão atualizados"
  • "verificar se o contexto está desatualizado"

Custo de tokens

  • "quanto os arquivos de contexto economizam"
  • "economia de tokens" / "custo de contexto"
  • "benchmark de economia de tokens"
  • "tokens de linha de base vs. tokens curados"

Configuração / integração

  • "criar estrutura AGENTS.md" / "inicializar contexto"
  • "instalar ctx-audit" / "configurar o hook de contexto"
  • "configurar contexto de IA" / "este projeto está pronto para IA"

CI / automação

  • "adicionar ctx-audit ao CI"
  • "adicionar um hook pre-push"
  • "impor atualização do contexto no CI"

Arquitetura

  • "eu tenho um mapa de arquitetura"
  • "gerar graph.md" / "executar graphify"

Como executar

A maneira recomendada de executar o ctx-audit:

npx ctx-audit

Alternativamente, se instalado como skill:

node <caminho-para-pasta-da-skill>/../scripts/audit.mjs

Flags:

  • --json — saída legível por máquina (use se for agir no resultado programaticamente).
  • --strict — código de saída 1 se algo estiver faltando ou desatualizado.
  • --ci — apelido para --strict --json.
  • --help — exibe uso e sai.

Subcomandos

# Criar estrutura AGENTS.md + memory.md (interativo — escreve arquivos diretamente na raiz do repositório)
npx ctx-audit init

# Instalação em um comando: copia skill para ~/.claude/skills/, registra em CLAUDE.md
npx ctx-audit install

# Hook Git: executa auditoria --strict a cada push
npx ctx-audit hook install
npx ctx-audit hook status
npx ctx-audit hook uninstall

# CLAUDE.md do projeto: adiciona um bloco de instruções para agentes
npx ctx-audit claude install
npx ctx-audit claude uninstall

# Relatório de economia de tokens (formato focado e compartilhável)
npx ctx-audit benchmark

Tabela de decisão do agente

StatusSignificadoAção
FRESCOMenos da metade do limite de desatualização em commits desde a última sincronizaçãoConfie no arquivo — leia-o em vez de escanear o código-fonte bruto
DESATUALIZADO?Aproximando-se do limite (possivelmente desatualizado)Cautela leve — verifique rapidamente alegações críticas antes de confiar
DESATUALIZADO!Acima do limite, conta como falhaTrate as alegações como não verificadas; verifique rapidamente contra o código real; atualize após a sessão
DESATUALIZADOSignificativamente atrasado, conta como falhaMesmo que DESATUALIZADO!, mas mais urgente; atualize imediatamente após a sessão
AUSENTE (obrigatório)Arquivo não existeExecute npx ctx-audit init; não prossiga como se a convenção estivesse em vigor
ausente (opcional)Arquivo opcional não presenteAceitável; considere executar /graphify para gerar graph.md
acima do orçamentoContagem de tokens excede maxTokensArquivo está inchado — corte-o; lê-lo pode custar mais do que economiza
referência mortaCaminho com crase ou dir/arquivo.ext mencionado no arquivo não existe no discoAtualize a referência; o arquivo documenta estrutura desatualizada
SHA alteradolast_synced_commit atualizado, mas corpo inalteradoVerifique se o arquivo realmente reflete mudanças recentes; pode ser uma atualização mecânica

Interpretando resultados

  • AUSENTE (arquivo obrigatório): não prossiga como se a convenção estivesse em vigor. Ofereça-se para criar um arquivo inicial (execute npx ctx-audit init) em vez de trabalhar sem ele ou silenciosamente adotar a abordagem antiga de "explorar tudo manualmente".
  • FRESCO: o arquivo está atualizado. Leia-o em vez de escanear o código-fonte bruto.
  • DESATUALIZADO? (possivelmente desatualizado): aproximando-se do limite. Verifique rapidamente alegações críticas.
  • DESATUALIZADO! (provavelmente desatualizado): trate suas alegações como não verificadas. Verifique rapidamente qualquer coisa importante contra o código real e, após sua sessão, atualize o arquivo e seu last_synced_commit.
  • DESATUALIZADO: significativamente atrasado. Mesmo tratamento que DESATUALIZADO!, mas mais urgente.
  • As contagens de tokens são uma heurística de ~3,5 caracteres/token — direcionalmente útil, não exata. Se um arquivo for sinalizado como "acima do orçamento", é porque ficou inchado o suficiente para que lê-lo comece a custar o que deveria economizar; sugira cortá-lo.
  • Avisos de referência morta: caminhos mencionados em arquivos de contexto que não existem mais no disco. Indica que o arquivo referencia uma estrutura desatualizada.

Exemplos práticos

Auditoria básica no início da sessão:

npx ctx-audit

Portão de CI (falhar build se o contexto estiver desatualizado):

# .github/workflows/ctx-audit.yml
- name: Auditar atualidade do contexto
  run: npx ctx-audit --strict

Saída JSON para uso programático:

npx ctx-audit --json | jq '.checks[] | {file, stalenessLevel, stale}'

Integração em um comando:

npx ctx-audit install        # copia skill, registra em CLAUDE.md
npx ctx-audit hook install   # adiciona guarda pre-push
npx ctx-audit claude install # adiciona nota ao CLAUDE.md do projeto
npx ctx-audit init           # cria estrutura AGENTS.md + memory.md

Verificar desatualização de subsistema específico (via frontmatter):

---
last_synced_commit: abc1234
watches: src/auth/**, src/api/**
---

Apenas commits que tocam em src/auth/ ou src/api/ contam para desatualização deste arquivo.

Benchmark de economia de tokens:

npx ctx-audit benchmark

Configuração

Coloque .ctx-audit.json na raiz do repositório para personalizar o comportamento:

{
  "files": [{ "id": "...", "file": "...", "label": "...", "maxTokens": N, "required": true }],
  "sourceDirs": ["src", "packages/core"],
  "staleThreshold": 10,
  "baselineFileCap": 300
}

Frontmatter

Cada arquivo de contexto deve começar com frontmatter:

---
last_synced_commit: <git sha>
watches: src/auth/**, src/api/**
---

O campo watches (opcional) restringe as verificações de desatualização apenas a commits que tocam naqueles caminhos, em vez de todos os diretórios de código-fonte.

Se arquivos obrigatórios estiverem faltando — crie a estrutura

Execute npx ctx-audit init para gerar modelos. Em um TTY, ele escreve os arquivos diretamente na raiz do repositório; quando redirecionado, imprime na saída padrão para redirecionamento. A flag legada --init ainda é suportada como um apelido compatível com versões anteriores.

AGENTS.md — convenções estáveis do projeto: comandos de build/teste/lint, regras de organização de arquivos, coisas que o agente nunca deve fazer. Deve mudar raramente.

memory.md — um registro contínuo de decisões, não uma reafirmação do código atual. Cada entrada: o que foi tentado, o que foi decidido, por quê, e o que reconsiderar se as circunstâncias mudarem. Anexe, não reescreva o histórico.

.agent/graph.md (opcional, mas recomendado quando o repositório crescer) — um parágrafo por módulo principal descrevendo sua responsabilidade e com o que ele se comunica. Não é o conteúdo dos arquivos, não é uma árvore exaustiva — apenas o suficiente para que um agente possa navegar sem reler tudo. Dica: execute /graphify para gerar isso automaticamente a partir da base de código, em vez de escrever manualmente.

Após criar ou atualizar qualquer um destes, atualize seu last_synced_commit para o HEAD atual, para que a próxima auditoria não o sinalize imediatamente como desatualizado.

Habilidades Relacionadas