jCodeMunch-MCP
Servidor MCP eficiente em tokens para exploração de código-fonte do GitHub via parsing de AST com tree-sitter
Documentação
jCodeMunch MCP
O servidor MCP mais eficiente em tokens para recuperação precisa de código-fonte via parsing AST com tree-sitter. Reduza os custos de tokens de IA em 86-99% na exploração de código (média de 96%, benchmark com 28,3x menos tokens que um agente grep-and-read) e pare de queimar sua janela de contexto lendo arquivos inteiros.
Resultados reais, ao vivo da produção 838B+ tokens economizados · 136.000+ instalações reportadas · US$ 4,2M+ em gastos de IA evitados · 100.000+ kg de CO₂ evitados Números contadores em 2026-08-17, avaliados na taxa de entrada de US$ 5/MTok do Claude Opus. Todos os quatro só crescem, então leia-os como mínimos. Ao vivo em jcodemunch.com.
Funciona com Claude Code, Cursor, VS Code, Codex CLI, Windsurf, Continue e qualquer cliente compatível com MCP.
Instalar agora · Início rápido · Veja as evidências · Preços
Grátis para uso pessoal. Use para ganhar dinheiro, e o Tio J. fica com uma parte. Justo? Licenças comerciais abaixo. Nossa garantia: se o jCodeMunch não se pagar, você não paga pelo jCodeMunch.
Por que jCodeMunch?
A maioria dos agentes de IA explora repositórios da maneira cara: abrem arquivos inteiros, examinam milhares de linhas irrelevantes, repetem. Isso não é "um pouco ineficiente". Isso é um incinerador de tokens.
O jCodeMunch indexa um codebase uma vez e permite que agentes recuperem apenas o código exato de que precisam: funções, classes, métodos, constantes, contornos e pacotes de contexto bem delimitados, com precisão de nível de byte. Ele analisa o código-fonte com tree-sitter, armazena metadados estruturados de símbolos (assinatura, tipo, nome qualificado, resumo, deslocamentos de byte) junto com o conteúdo bruto do arquivo em um índice local, e busca implementações exatas sob demanda em vez de reler arquivos repetidamente.
| Tarefa | Abordagem tradicional | Com jCodeMunch |
|---|---|---|
| Encontrar uma função | Abrir e examinar arquivos grandes | Buscar símbolo, buscar implementação exata |
| Entender um módulo | Ler regiões amplas do arquivo | Puxar apenas símbolos e imports relevantes |
| Explorar estrutura do repo | Percorrer arquivo após arquivo | Consultar contornos, árvores e pacotes direcionados |
| "O que quebra se eu mudar X?" | Não é possível | get_blast_radius |
Indexe uma vez. Consulte barato. Continue em frente. Contexto de precisão vence contexto de força bruta.
Evidências
Benchmark reproduzível de eficiência de tokens
Medido com tiktoken cl100k_base em três repositórios públicos fixados em commits upstream, executado em 2026-09-03 na v1.108.316. Fluxo de trabalho: search_symbols (top 5) + get_symbol_source × 3 por consulta. Duas linhas de base, mesma execução, mesmo corpus, mesmo leitor de arquivos:
- Grep-top-3:
rg -los termos da consulta, classifica arquivos por contagem de correspondências, abre os 3 primeiros inteiros. Isso é o que um agente competente sem a ferramenta realmente faz, e é o número a citar. - Read-all: todos os arquivos-fonte indexados concatenados. Um teto que ninguém paga; mantido para continuidade com números publicados anteriormente.
| Repositório | Arquivos | Símbolos | Linha de base Grep-top-3 | jCodeMunch | vs grep | vs read-all |
|---|---|---|---|---|---|---|
| expressjs/express | 186 | 455 | 15.724 média | 1.007 média | 15,6x | 153,5x |
| fastapi/fastapi | 1.186 | 13.240 | 85.296 média | 2.149 média | 39,7x | 384,1x |
| gin-gonic/gin | 98 | 1.451 | 31.975 média | 1.537 média | 20,8x | 98,8x |
| Total geral (15 execuções de tarefas) | 664.975 | 23.467 | 28,3x | 241,1x |
Contra um agente grep-and-read: redução de 96,5%, 28,3x menos tokens. Nenhum múltiplo único descreve cada consulta; as linhas por repositório acima mostram a variação. Contra read-all, o número é 99,6%, mas ninguém paga esse teto. A codificação compacta de transmissão MUNCH então reduz uma mediana de 45,5% a mais de bytes nas respostas.
Metodologia completa, commits fixados, harness e limitações conhecidas: benchmarks/METHODOLOGY.md · Reproduza você mesmo · TOKEN_SAVINGS.md
Teste A/B independente em um codebase de produção
Teste A/B de 50 iterações em um codebase real de produção Vue 3 + Firebase, jCodeMunch vs ferramentas nativas (Grep/Glob/Read), Claude Sonnet 4.6, sessão nova por iteração: taxa de sucesso 80% vs 72%, taxa de timeout 32% vs 40%, criação média de cache reduzida em 10,5%. Economias na camada de ferramentas isoladas da sobrecarga fixa: 15-25%. Uma categoria de descoberta apareceu exclusivamente na variante jCodeMunch: detecção de arquivos órfãos via find_importers, uma consulta estrutural que ferramentas nativas não conseguem responder sem scripts. Relatório completo: benchmarks/ab-test-naming-audit-2026-03-18.md
Mencionado por
- Artur Skowroński (VirtusLab): "aproximadamente 80% menos tokens, ou 5x mais eficiente — indexe uma vez, consulte barato para sempre" · GitHub All-Stars #15
- Traci Lim (AWS · Líder de IA da ASEAN): "consultas estruturais que ferramentas nativas não conseguem responder: find_importers, get_blast_radius, get_class_hierarchy, find_dead_code" · 5 Repos Que Economizam Uso de Tokens no Claude Code
- Julian Horsey (Geeky Gadgets): "3.850 tokens reduzidos para apenas 700 — uma melhoria de 5,5x" · JCodeMunch AI Token Saver
- Eric Grill: "contexto é o recurso escasso. Corte-o em 90% e toda a pilha fica mais barata e confiável" · jCodemunch: Mecanismo de Contexto para Agentes de IA
Página completa de reconhecimentos →
Instalação
Instalações com um clique
Recomendado: um comando
uv tool install jcodemunch-mcp
jcodemunch-mcp init
Sem virtualenv para gerenciar, nada escrito no Python do sistema, e funciona como está em distros PEP 668 (Ubuntu 24.04+, Debian 12+) onde pip install puro é recusado. Ainda não tem uv?
init detecta automaticamente seus clientes MCP (Claude Code, Claude Desktop, Cursor, Windsurf, Continue), escreve as entradas de configuração deles, instala a política de prompt CLAUDE.md para que seu agente realmente use o jCodeMunch, opcionalmente instala hooks de aplicação, opcionalmente indexa seu projeto e audita seus arquivos de configuração de agente em busca de desperdício de tokens.
Outros caminhos de instalação
| Comando | Use quando |
|---|---|
uvx jcodemunch-mcp | Instalação zero. Executa a partir de um ambiente efêmero — nada fica permanentemente no disco. As entradas de cliente que init escreve já invocam o servidor dessa forma, então para a maioria das configurações isso é tudo que é executado. ⚠ Os hooks de aplicação são a exceção: eles são gerados por um subshell com PATH mínimo e resolvem o executável pelo nome, então precisam de uv tool install (ou pipx/pip) para funcionar. |
pipx install jcodemunch-mcp | Você já padroniza com pipx |
pip install jcodemunch-mcp | Dentro de um virtualenv que você gerencia |
Verifique:
jcodemunch-mcp --version
Configuração manual do Claude Code
claude mcp add -s user jcodemunch -- uvx jcodemunch-mcp
Sem etapa de instalação — uvx busca e executa o servidor sob demanda. Prefere no seu PATH (e necessário para hooks de aplicação)? uv tool install jcodemunch-mcp, depois claude mcp add -s user jcodemunch jcodemunch-mcp.
Depois diga ao agente para preferir as ferramentas. Isso importa mais do que as pessoas pensam; a instalação disponibiliza as ferramentas, mas não quebra o hábito de leitura bruta do agente. Uma linha no seu CLAUDE.md resolve:
Call the jcodemunch_guide tool and strictly follow its instructions.
Usando Cursor, Windsurf, Codex CLI, Antigravity, Gemini CLI, Qwen Code, Kiro, Cline, Zed, Goose, Hermes, Odysseus ou Paperclip? Toda configuração de cliente testada está em CLIENTS.md. Extras opcionais (busca semântica local, resumos de IA por provedor) estão em QUICKSTART.md; os sistemas que cada extra puxa são documentados em SECURITY.md.
Início rápido
Passo a passo completo: QUICKSTART.md. A versão de dois minutos, dentro do seu agente após init:
- Pergunte: "Indexe este repo com jcodemunch."
- Pergunte: "Usando jcodemunch, encontre a função que lida com autenticação e mostre-me o código-fonte dela."
O agente deve responder via search_symbols e get_symbol_source, retornando dezenas de linhas em vez de arquivos inteiros. Confirme com get_session_stats: ele reporta tokens servidos e economias para a sessão. É daí que vêm os números no medidor.
Quer pular a indexação inicial para frameworks populares? Pacotes iniciais pré-construídos: jcodemunch-mcp install-pack --list (pacotes gratuitos não precisam de licença).
O que você pode fazer
- Recupere um símbolo em vez de carregar um arquivo.
get_symbol_sourceretorna o corpo exato da função, com precisão de byte, para a maioria das edições que tocam uma função em um arquivo de 700 linhas (~95% de economia nessa leitura). - Monte o contexto de uma tarefa inteira em uma chamada.
assemble_task_contextclassifica a intenção da tarefa, extrai símbolos âncora e executa a sequência certa de ferramentas sob um orçamento de tokens.plan_turnroteia o turno antes da primeira leitura. - Faça perguntas estruturais que o grep não consegue responder.
find_importers,get_blast_radius,get_call_hierarchy,find_dead_code,get_changed_symbols,get_hotspots,search_astvarreduras de anti-padrões e mais. Dois deles soam parecidos e não são:check_referencesresponde onde um nome é usado (locais de importação mais todo arquivo cujo conteúdo o menciona),find_referencesresponde quem o importa, apenas sobre o grafo de importação, então um local de chamada é invisível para ele. - Pré-valide mudanças arriscadas e saiba quando parar.
check_edit_safe,check_delete_safe,get_pr_risk_profileeplan_refactoringcom blocos{old_text, new_text}prontos para edição. As duas verificações de segurança retornamstop_rule.terminal: true significa que nenhuma chamada adicional ao jcodemunch muda o veredito, então reexecutarfind_importersoucheck_referencespara ter certeza é trabalho desperdiçado. Significa final, não seguro.check_rename_saferespondesafe: nullem vez detruequando o grafo de importação não conseguiu alcançar o arquivo do símbolo, então os arquivos que o usam nunca foram verificados, eget_pr_risk_profileresponderisk_score: nullcomunmeasurable_axesquando não conseguiu medir o eixo de impacto; um gate de CI deve falhar em null. Entregue ao servidor a própria saída do seu verificador de tipos (jcodemunch-mcp import-trace --diagnostics <file>:mypy --output json,pyright --outputjson,tsc --pretty false,ruff --output-format json) echeck_edit_safe,get_changed_symbols,get_pr_risk_profileeget_symbol_provenancedizem quais símbolos o verificador já sinaliza, a partir de qual commit. Nada executa um verificador por você. False nomeia a coisa específica que mudaria a resposta. - Confie nas respostas. Pontuações de confiança calibradas, sinalizadores de atualização, contratos de cobertura em alegações de ausência, referências verificadas por compilador via importação SCIP e redação automática de segredos antes que qualquer coisa chegue ao LLM.
- Mantenha o índice atualizado automaticamente. Modos de observação, hooks de agente e uma extensão do VS Code fecham a lacuna de desatualização.
Esse é o resumo dos destaques. O tour completo das 90+ ferramentas, o formato compacto de transmissão MUNCH, recibos de evidências, anotação de trabalho descarregável e a instrumentação de economia de sessão estão em CAPABILITIES.md, com detalhes internos em UNDER_THE_HOOD.md.
O que há de novo
- v1.108.318 (2026-09-11) — o processo é código que não pode pular uma etapa, e o campo é medido a partir de arquivos de resultado
- v1.108.317 (2026-09-04) — CI executa o harness em cada mudança; a publicação é um workflow despachado
- v1.108.316 (2026-09-02) — Uma preferência de exibição editou os dados que estava exibindo
Quando ajuda (e quando não ajuda)?
| Cenário | Ferramenta nativa | jCodeMunch | Economia |
|---|---|---|---|
| Editar uma função (arquivo de 700 linhas) | Read → 700 linhas | get_symbol_source → 30 linhas | ~95% |
| Entender a estrutura de um arquivo | Read → conteúdo completo | get_file_outline → nomes + assinaturas | ~80% |
| Descobrir qual arquivo editar | Grep muitos arquivos | search_symbols → correspondência exata | comparável |
| Edição exige contexto do arquivo inteiro | Read → conteúdo completo | get_file_content → conteúdo completo | ~0% |
| "O que quebra se eu mudar X?" | não é possível | get_blast_radius | capacidade exclusiva |
Ele ajuda mais em edições direcionadas (uma função, um método, uma classe), que são a maioria do trabalho real de edição. Edições que realmente exigem o arquivo inteiro (reestruturar estado no nível do arquivo, reordenar lógica que abrange centenas de linhas) não veem vantagem. Melhor se aplica a: repositórios grandes, bases de código desconhecidas, exploração orientada por agentes, refatoração e análise de impacto, e equipes que cortam custos de tokens de IA sem tornar os agentes menos inteligentes.
Idiomas: mais de 70 via tree-sitter, incluindo Python, JavaScript/TypeScript, Go, Rust, Java, C/C++, C#, PHP, Ruby, Swift e Kotlin. Matriz completa: LANGUAGE_SUPPORT.md. Monorepos: sim; indexação incremental, detecção de membros do workspace, escopo por subcaminho.
Adiando os esquemas de ferramentas (busca de ferramentas da Anthropic)
Se você acessar o jCodeMunch por meio do conector MCP em um modelo que suporta busca de ferramentas, você pode manter nossos esquemas fora do prefixo de contexto inteiramente e deixar o Claude carregar apenas as duas ou três ferramentas que uma solicitação precisa. Você não define defer_loading por ferramenta — defina uma vez para o servidor inteiro:
{
"mcp_servers": [
{ "type": "url", "url": "https://your-host/mcp", "name": "jcodemunch" }
],
"tools": [
{ "type": "tool_search_tool_bm25_20251119", "name": "tool_search_tool_bm25" },
{
"type": "mcp_toolset",
"mcp_server_name": "jcodemunch",
"default_config": { "defer_loading": true },
"configs": {
"resolve_repo": { "defer_loading": false },
"search_symbols": { "defer_loading": false },
"get_ranked_context": { "defer_loading": false }
}
}
]
}
Envie com o cabeçalho beta mcp-client-2025-11-20. Ambas as partes são obrigatórias — mcp_servers sozinho é um erro de validação, e mcp_toolset sem o mcp_server_name correspondente também é.
⚠ O conector MCP aceita uma URL, então isso se aplica ao jCodeMunch servido via sse ou streamable-http (jcodemunch-mcp serve --transport streamable-http), não à configuração padrão local via stdio. No stdio, se os esquemas são adiados depende do seu cliente, e tool_surface: "counter" abaixo é a alavanca que você controla.
O bloco configs acima segue o próprio conselho da Anthropic — mantenha suas 3–5 ferramentas mais usadas residentes para que solicitações comuns evitem a ida e volta da busca — e configs por ferramenta substitui default_config.
Definições adiadas são excluídas do prefixo do prompt do sistema e anexadas inline como blocos tool_reference quando o Claude as descobre, então o cache de prompt é preservado — este não é o tipo de lista de ferramentas dinâmica que invalida o cache. Pelo menos uma ferramenta na solicitação deve permanecer não adiada, ou a API retorna um 400.
⚠ Este é um mecanismo diferente do nosso próprio tool_surface: "counter", e você não precisa de ambos. A busca de ferramentas é do lado do host e funciona em todos os servidores MCP que você tem conectados; o Contador é do lado do servidor, funciona em qualquer host, incluindo aqueles sem suporte a busca de ferramentas, e é o que init configura em uma primeira instalação. Escolha o que seu host suporta — veja CONFIGURATION.md para o Contador e jcodemunch-mcp surface para o que sua instalação realmente anuncia.
Segurança, privacidade e comportamento em segundo plano
Local-primeiro por design: os índices ficam em ~/.code-index/, e o único comportamento de rede padrão do pacote base é um contador de economia anônimo (ID aleatório mais contagens agregadas de tokens, sem código, sem caminhos, sem PII; opte por sair com share_savings: false). Tudo o que o servidor faz além de responder a uma chamada de ferramenta (observação de arquivos, serviço de login opcional, validação de licença, downloads de modelos, relatórios de organização) é opt-in ou opt-out, visível e reversível, e cada item está enumerado em SECURITY.md junto com os controles de travessia de caminho, symlink e redação de segredos.
Substituição do pacote de gramáticas (#608). A dependência tree-sitter-language-pack está fixada em <1.0.0 porque as wheels 0.x incluem todas as gramáticas e a análise permanece local. F# é a única exceção: é analisado pela wheel fixada tree-sitter-fsharp, que também compila sua gramática, então a análise de F# permanece local em qualquer pacote (#848). Você pode substituí-la com pip install -U tree-sitter-language-pack após a instalação; nada no código a recusa. O que você aceita, medido contra 1.17.0 em 2026-09-11: o pacote 1.x não inclui gramáticas e busca cada uma pela rede em seu diretório de cache (medido no Windows: %LOCALAPPDATA%\tree-sitter-language-pack\v<version>\libs; jcodemunch-mcp install-status imprime o caminho em qualquer plataforma) na primeira vez que um idioma é analisado, então uma instalação sem rede não analisa nada, e a gramática nim mudou upstream, então arquivos nim não produzem símbolos (o manifesto também carece de autohotkey, ejs e verse, o que não custa nada aqui: esses três são analisados pelos próprios extratores do jCodeMunch, não pelo tree-sitter). Uma instalação em um pacote 1.x diz isso: cada resultado index_folder carrega um bloco grammar_pack e um aviso nomeando a versão, o diretório de cache e cada idioma cuja gramática falhou, e jcodemunch-mcp install-status imprime o mesmo. Remover a fixação é uma decisão separada que precisa da história offline primeiro.
Configuração por projeto
A maioria das configurações fica no ~/.code-index/config.jsonc global, mas qualquer uma delas pode ser substituída para um único repositório colocando um .jcodemunch.jsonc em sua raiz. É uma sobreposição: chaves que declara vencem, chaves que omite caem para o global e depois para o padrão embutido, então só precisa conter o que difere.
// <your-repo>/.jcodemunch.jsonc
{
"max_file_size": 1048576,
"languages": ["python", "typescript", "racket"]
}
Declarando formas de definição do Racket
Projetos Racket rotineiramente definem suas próprias formas de definição com define-syntax, e um analisador estático não pode saber o que elas vinculam — (defstep (check-admin) ...) é indistinguível de uma chamada de função. Declará-las torna seus vínculos pesquisáveis:
{
"racket_definition_forms": {
"defstep": "function",
"defstudy": "constant",
"defvar": "constant",
"define-schema": "class"
}
}
Cada entrada mapeia um nome de forma para o que ela vincula: function, constant, class ou type. Onde o nome fica é lido da fonte em vez de declarado — (defstep (check-admin) ...) pega o cabeçalho da lista de parâmetros, (defstudy consent ...) pega o símbolo puro — então uma forma que aparece em ambas as formas funciona de qualquer maneira.
⚠ Isso é uma afirmação, não algo que o jCodeMunch pode verificar. Uma declaração errada coloca um nome no índice que o Racket não vincula de fato. Declarações também são correspondidas apenas após cada forma embutida, então declarar define ou struct não tem efeito — o tratamento embutido vence.
Declarando como é um #lang do Racket
Uma linha #lang nomeia um leitor, e o analisador Racket do jCodeMunch lê expressões S. Os langs da distribuição são embutidos (racket/*, typed/racket*, s-exp, info, at-exp …, e os langs de documento scribble/*, pollen, punct, markdown …), mas o lang de um projeto próprio é desconhecido para ele e é tratado como um documento — sem símbolos, ainda pesquisável por texto — até você dizer qual é sua sintaxe:
{
"racket_langs": {
"conscript": "at-exp",
"mylang": "sexp"
}
}
sexp é expressões S puras; at-exp é corpos de texto at-exp sobre Racket (lidos com @ como o caractere de comando, exatamente como #lang at-exp os lê, então prosa contendo ; " # ou | é prosa); text é um idioma de documento que nunca é percorrido. Uma chave também cobre seus sub-idiomas (conscript corresponde a conscript/with-require), e um projeto pode rebaixar um idioma bem como promover um. Um idioma at-exp cujo leitor usa outro caractere de comando o declara com a forma de objeto — "mylang": {"tier": "at-exp", "command_char": "◊"} — da maneira que o make-at-readtable do Racket aceita #:command-char.
Ambas as chaves mudam o que o analisador emite para arquivos inalterados, então uma mudança em qualquer uma é carimbada no índice e força uma reanálise completa na próxima indexação (rebuild_reason: "racket_config_changed"); você não precisa tocar nos arquivos ou limpar o índice. Um índice contendo arquivos Racket construído antes deste carimbo existir reanalisa uma vez da mesma maneira (rebuild_reason: "racket_index_predates_gate").
Documentação
| Doc | O que cobre |
|---|---|
| QUICKSTART.md | Do zero ao indexado em três passos |
| CLIENTS.md | Configuração testada para cada cliente MCP |
| USER_GUIDE.md | Referência completa de ferramentas, fluxos de trabalho e melhores práticas |
| CAPABILITIES.md | A referência completa de capacidades além do resumo |
| CONFIGURATION.md | Referência do arquivo de configuração, alavancas de controle de tokens, hierarquia de ferramentas, o Contador |
| UNDER_THE_HOOD.md | O manual técnico: veredictos, internals de classificação, contratos de proveniência |
| ARCHITECTURE.md | Design interno, modelo de armazenamento e pontos de extensão |
| GROQ.md | Groq Remote MCP, o CLI gcm, GitHub Action speedreview |
| HEADLESS.md | Usando jCodeMunch com claude -p |
| AGENT_HOOKS.md | Ganchos de agente e políticas de prompt |
| LANGUAGE_SUPPORT.md | Idiomas suportados e detalhes de análise |
| SECURITY.md | Controles de segurança, movimento de dados, comportamento em segundo plano |
| TROUBLESHOOTING.md | Problemas comuns e correções |
| CHANGELOG.md · ROADMAP.md | Histórico de versões e o que vem a seguir |
Licenciamento e uso comercial
jCodeMunch-MCP é lançado sob a Licença de Uso Dual jCodeMunch-MCP (termos completos). Grátis para uso não comercial. Uso comercial requer uma licença paga, única, vendida pela jMunch LLC via Stripe:
Somente jCodeMunch: Builder, $79 (1 desenvolvedor) · Studio, $349 (até 5) · Platform, $1,999 (implantação interna em toda a organização)
Suíte completa jMunch (código + docs + dados): Trio Builder, $99 · Trio Studio, $449 · Trio Platform, $2,499
Não tem certeza se vale a pena? Faça suas próprias contas com a calculadora de ROI, ou encaminhe a versão para o time de finanças para quem aprova. A garantia permanece: se o jCodeMunch não se pagar, você não paga pelo jCodeMunch.
Condições em todos os usos: mantenha o aviso de direitos autorais, marque claramente modificações e mantenha o nome do autor original intacto (ele é meio vaidoso), e inclua um aviso de modificação proeminente em redistribuições de fonte. O Software não pode ser renomeado, re-marcado ou publicado em qualquer registro público de pacotes, e é fornecido "COMO ESTÁ" sem garantia. LICENSE controla.
FAQ
Quanto posso economizar em tokens do Claude / Opus? Em fluxos de trabalho pesados de recuperação, tokens de leitura de código tipicamente caem 86-99%, medidos em média de 96,5% (28,3x) contra um agente de grep-e-leitura em 15 tarefas e 3 repositórios. Resultados por consulta variam de 7,6x a 81,2x. Metodologia: TOKEN_SAVINGS.md e benchmarks/.
Como isso é diferente de ferramentas baseadas em RAG ou grep? jCodeMunch recupera no nível de símbolo com precisão de byte (funções, classes, importadores, raio de explosão, hierarquias) em vez de pedaços difusos (RAG) ou correspondências de linha bruta (grep) que o agente ainda precisa ler e raciocinar.
É grátis para uso pessoal? Sim. Uso comercial precisa de licença; veja acima.
Onde está o mergulho profundo em X? Capacidades: CAPABILITIES.md. Config: CONFIGURATION.md. Clientes: CLIENTS.md. Internals: UNDER_THE_HOOD.md. Ou o fluxo completo: jcodemunch.com.
Extras: Observatório de saúde de código OSS (capturas semanais em seis eixos de Express, FastAPI, Gin, Django e afins) · Radar de Custo de Tokens (inteligência diária de custo de tokens de IA) · Console jMunch (GUI MIT gratuita para atualizações com um clique)