GitHits

O MCP GitHits dá aos agentes de IA acesso a busca de código aberto, documentação de pacotes, exemplos do mundo real, metadados de dependências, changelogs e contexto de vulnerabilidades para melhores decisões de desenvolvimento de software.

Documentação

GitHits

GitHits CLI

A camada de contexto de código para agentes de codificação de IA.

npm version npm downloads Main License: Apache-2.0 Node MCP skills.sh smithery badge githits-cli MCP server MCP Badge

Website · Documentação · Issues

O GitHits conecta agentes de codificação de IA a evidências de código aberto público em todo o ciclo de vida do desenvolvimento de software: descoberta, planejamento, pesquisa, implementação, depuração e manutenção.

A CLI executa um servidor MCP local que sua ferramenta de codificação inicia sob demanda. Os agentes podem então pesquisar código-fonte indexado de pacotes e repositórios, ler arquivos exatos e páginas de documentação, inspecionar a saúde dos pacotes, comparar atualizações de dependências e encontrar exemplos citados de código-fonte de projetos de código aberto reais quando o conhecimento do modelo e o contexto do repositório local não são suficientes.

Início Rápido

npx githits@latest init

init faz login, detecta ferramentas de codificação suportadas e configura o GitHits para as ferramentas selecionadas. Ele usa o MCP stdio local, exceto para o Cursor, cuja configuração direta usa o MCP remoto hospedado.

A configuração automática atualmente suporta Claude Code, Cursor, Windsurf, VS Code / Copilot, Cline, Claude Desktop, Codex CLI, Pi, Gemini CLI, Google Antigravity, OpenCode, Hermes Agent, Zed, Junie, Qwen Code, Kiro, Kilo Code, Factory Droid e Amazon Q CLI.

Após a configuração, abra seu agente de codificação e trabalhe normalmente. Muitos agentes chamam o GitHits quando precisam de contexto baseado em código-fonte. Se o seu agente começar a adivinhar, solicite-o diretamente:

Use GitHits Code Navigation to inspect npm:express. Find how middleware
errors are handled, read the relevant source, and explain the fix before
editing code.

O que o GitHits Adiciona

O GitHits é projetado para o ponto em que um agente precisa de evidências do ecossistema de código aberto mais amplo, não apenas da memória do modelo ou do contexto do repositório local:

CapacidadeFerramentas MCPComandos CLI
Exemplos de códigoget_example, search_languagegithits example, githits languages
Navegação de códigosearch, search_status, code_files, code_read, code_grepgithits search, githits search-status, githits code ...
Acesso à documentaçãodocs_list, docs_readgithits docs ...
Inspeção de pacotespkg_info, pkg_vulns, pkg_deps, pkg_changelog, pkg_upgrade_reviewgithits pkg ...
Feedbackfeedbackgithits feedback

Use o GitHits quando seu agente precisar de:

  • descobrir, planejar ou pesquisar como projetos OSS resolvem um problema vago ou erro desconhecido
  • encontrar artefatos anteriores amplos ou exemplos raros de agulha no palheiro em repositórios
  • inspecionar código-fonte, testes, símbolos ou documentação de um pacote ou repositório conhecido
  • verificar como uma dependência realmente se comporta antes de alterar o código
  • depurar rastreamentos de pilha que apontam para código de terceiros
  • revisar saúde do pacote, licenças, vulnerabilidades, dependências e changelogs
  • comparar atualizações de dependências usando evidências factuais

Exemplos

Encontre artefatos anteriores em código aberto:

npx githits@latest example "HTTP retries with exponential backoff in Python"

Pesquise código, documentação e símbolos indexados para uma dependência:

npx githits@latest search "router middleware" --in npm:express
npx githits@latest search '"body parser" OR multer' --in npm:express --source docs
npx githits@latest search "debounce" --in npm:lodash --source symbol

Leia e pesquise o código-fonte da dependência sem clonar:

npx githits@latest code files npm:express lib
npx githits@latest code read npm:express lib/router/index.js --lines 120-200
npx githits@latest code grep npm:express "router.use" lib --regex

Inspecione a saúde do pacote e evidências de atualização:

npx githits@latest pkg info npm:express
npx githits@latest pkg vulns npm:lodash@4.17.20 --severity high
npx githits@latest pkg deps npm:express@4.18.2 --depth 2
npx githits@latest pkg changelog npm:express --from 4.18.2 --to 5.2.1
npx githits@latest pkg upgrade-review npm:zod@4.3.6 --to 4.4.3

Navegue e leia a documentação do pacote:

npx githits@latest docs list npm:express
npx githits@latest docs read <page-id> --lines 20-80

Ferramentas Experimentais

O GitHits 0.10 adiciona duas ferramentas locais opcionais para uso antecipado interno:

  • resolve_target / githits resolve transforma um nome de pacote ou repositório vago ou ambíguo em alvos canônicos classificados.
  • code_diff / githits code diff compara árvores de repositório resolvidas a partir de versões exatas de pacotes ou refs públicos do GitHub.

Elas estão ocultas e desabilitadas por padrão. Estão disponíveis apenas através da CLI local githits e do servidor MCP stdio local; o MCP hospedado e as instalações de plugin ou extensão mantêm o conjunto estável de ferramentas. Habilite-as na configuração do host do GitHits e reinicie o agente de codificação para que ele reinicie o servidor MCP local:

# macOS/Linux: ~/.config/githits/config.toml
# Windows: %APPDATA%\githits\config.toml
[experimental]
tools = true

Consulte Ferramentas experimentais para descoberta de configuração específica da plataforma, exemplos de CLI, relatórios opcionais de problemas, limitações e como desabilitar as ferramentas.

Fontes Suportadas

O GitHits funciona com alvos de pacotes e repositórios, como:

  • especificações de pacotes: npm:react, npm:react@18.2.0, pypi:requests, crates:serde
  • repositórios GitHub: https://github.com/expressjs/express, github:expressjs/express#main

A inspeção de pacotes suporta npm, PyPI, Hex, Crates, NuGet, Maven, Packagist, RubyGems, Go, Swift, vcpkg e Zig. Dados de aviso não estão disponíveis para vcpkg e Zig; o suporte a gráfico de dependências varia por registro.

Filtragem de Licença

A pesquisa de exemplos de código suporta filtragem de licença:

  • strict é o padrão e filtra repositórios com licenças copyleft ou não declaradas
  • custom usa sua lista de bloqueio de conta configurada em githits.com
  • yolo desabilita a filtragem de licença
npx githits@latest example "async file reading" --lang python --license strict

Autenticação

A configuração local normal é tratada por:

npx githits@latest init

Para login manual:

npx githits@latest login

O OAuth de navegador é recomendado para desenvolvimento local. As credenciais são armazenadas no chaveiro do sistema por padrão e atualizadas automaticamente. Flags úteis:

  • init --no-browser ou login --no-browser imprime a URL de login em vez de abrir um navegador
  • init --port <port> ou login --port <port> corrige a porta de retorno de chamada de loopback
  • login --force reautentica mesmo se você já estiver logado

O retorno de chamada OAuth sempre escuta na máquina onde o GitHits está em execução. Quando o GitHits é executado via SSH e o navegador é executado localmente, encaminhe a porta selecionada da máquina do navegador:

ssh -N -L 8765:127.0.0.1:8765 user@remote-host

Com esse túnel aberto, execute o GitHits na máquina remota usando a mesma porta:

npx githits@latest init --no-browser --port 8765

Abra a URL impressa pelo GitHits no navegador local. Substitua user@remote-host pelo destino SSH que você normalmente usa. As mesmas flags funcionam com githits login após a configuração.

O OAuth de navegador é interativo. Para CI e outros ambientes não supervisionados, forneça GITHITS_API_TOKEN através do gerenciador de segredos do ambiente.

Prompts do Chaveiro e Armazenamento de Arquivos

O GitHits usa o chaveiro do sistema por padrão porque as credenciais OAuth incluem um token de atualização. No macOS, isso significa Acesso ao Chaveiro; no Windows, Gerenciador de Credenciais; no Linux, o backend de Serviço Secreto ou keyring disponível.

Se o macOS mostrar um prompt como "githits deseja acessar ... no seu chaveiro", escolha Sempre Permitir quando confiar na CLI githits instalada. O GitHits não pode personalizar esse prompt do sistema operacional; ele é gerado pelo macOS.

O GitHits também grava um pequeno arquivo de metadados não secretos para que verificações recentes de inicialização não precisem ler o chaveiro. O chaveiro só é lido quando o GitHits precisa do token, por exemplo, durante uma chamada de ferramenta, atualização de token, githits auth status ou uma verificação de login após metadados desatualizados ou expirados.

Se o seu agente continuar mostrando prompts do chaveiro mesmo após Sempre Permitir, alterne o armazenamento OAuth para o modo de arquivo:

# macOS/Linux: ~/.config/githits/config.toml, or $XDG_CONFIG_HOME/githits/config.toml
# Windows: %APPDATA%\githits\config.toml
[auth]
storage = "file"

O diretório de configuração pode estar vazio até você criar config.toml ou o GitHits gravar metadados de autenticação. Instalações mais antigas do macOS podem ter usado ~/Library/Application Support/githits; o GitHits ainda lê esse local para migração, mas a nova configuração de autenticação e o armazenamento de arquivos usam ~/.config/githits.

Você também pode optar por um processo:

GITHITS_AUTH_STORAGE=file githits login --force

O modo de arquivo armazena credenciais OAuth como arquivos JSON no diretório de configuração do GitHits. Os arquivos são gravados com permissões privadas onde a plataforma suporta, mas não são criptografados. Qualquer processo que possa ler arquivos como seu usuário do sistema operacional pode ser capaz de ler os tokens.

Use o modo de arquivo apenas em máquinas onde você confia no acesso local da conta de usuário. Para CI e automação, prefira GITHITS_API_TOKEN em vez de OAuth de navegador.

Inspecione o estado de autenticação e tempo de execução com:

npx githits@latest auth status
npx githits@latest doctor

Consulte a documentação de autenticação para comportamento do chaveiro, modo de armazenamento de arquivos, configuração de CI e solução de problemas.

Configuração Manual do MCP

Se sua ferramenta de codificação não for configurada automaticamente por init, adicione o GitHits à sua configuração MCP manualmente:

{
  "mcpServers": {
    "githits": {
      "command": "npx",
      "args": ["-y", "githits@latest", "mcp", "start"]
    }
  }
}

Sua ferramenta executa este comando via stdio. Nenhum daemon em segundo plano ou instalação global é necessária.

Para remover a configuração gravada por init:

npx githits@latest init uninstall

Isso remove a configuração MCP do GitHits e preserva as credenciais armazenadas. Execute npx githits@latest logout separadamente para remover as credenciais.

Configuração do Projeto

Para configuração MCP local do projeto, execute:

npx githits@latest init --project

A configuração do projeto está disponível apenas para ferramentas com suporte MCP local do projeto verificado. A configuração do projeto não contém segredos, mas pode ser commitada como qualquer outra configuração de ferramenta, então revise os arquivos gerados antes de adicioná-los ao controle de versão.

A configuração não interativa segura para agentes usa descoberta em etapas e instalação explícita:

npx githits@latest init --detect-agents --json
npx githits@latest init --install-agents cursor,codex

Empacotamento de Plugins e Extensões

O repositório e o pacote publicado fornecem os ativos de plugin e extensão usados por hosts compatíveis. Instalações baseadas em Git também mantêm os symlinks de arquivos de contexto (CLAUDE.md e GEMINI.md) para o AGENTS.md canônico:

  • .plugin/plugin.json
  • .claude-plugin/plugin.json
  • .claude-plugin/marketplace.json
  • .codex-plugin/plugin.json
  • .cursor-plugin/plugin.json
  • .mcp.json
  • gemini-extension.json
  • plugin.json (Google Antigravity)
  • mcp_config.json (Google Antigravity)
  • AGENTS.md
  • CLAUDE.md
  • GEMINI.md
  • skills/

A árvore de habilidades raiz é compartilhada por todos os hosts suportados. Cada instalação de plugin e extensão usa o MCP remoto hospedado, incluindo Claude, Codex, Cursor, Gemini CLI, Google Antigravity e VS Code/GitHub Copilot OpenPlugin. A configuração direta do githits init é um caminho separado: ela instala configurações stdio locais para ferramentas suportadas, exceto o Cursor, que permanece apenas remoto. A raiz do repositório é um plugin nativo do Antigravity através de plugin.json, mcp_config.json e da árvore compartilhada skills/. Os manifestos gerados são atualizados com bun run plugins:generate e validados com bun run plugins:check.

Para instalações do marketplace do Claude Code:

claude plugin marketplace add githits-com/githits-cli
claude plugin install githits@githits-plugins

Para instalações de extensão do Gemini CLI:

gemini extensions install https://github.com/githits-com/githits-cli

Referência de Comandos

githits init             Connect GitHits to your coding agents
githits init uninstall   Remove GitHits MCP configuration
githits login            Sign in to your GitHits account
githits logout           Remove stored credentials
githits mcp              Show setup instructions or start the local MCP server
githits mcp start        Always start the local MCP server over stdio
githits example          Find real-world implementations from open source
githits languages        List or filter supported programming languages
githits feedback         Submit feedback about GitHits results
githits doctor           Diagnose configuration and auth state
githits resolve          Experimental: resolve a fuzzy name to canonical targets
githits settings         View and update preferences, privacy, and terms
githits search           Explore repository code, dependencies, docs, and symbols
githits search-status    Check the status of a previous indexed search
githits code             List, read, grep, or experimentally diff indexed source
githits pkg              Inspect package metadata, vulnerabilities, deps, and changelogs
githits docs             Browse and read package documentation
githits auth             Manage authentication
githits auth status      Show authentication status

Referência completa da CLI: https://docs.githits.com/cli/commands

Variáveis de Ambiente

A maioria dos usuários não precisa de variáveis de ambiente. Estas são as substituições comuns para CI, armazenamento de autenticação e diagnósticos locais:

VariávelPropósitoPadrão
GITHITS_API_TOKENToken de API para autenticaçãonão definido
GITHITS_AUTH_STORAGESubstituir o modo de armazenamento OAuth: keychain ou filekeychain
GITHITS_DISABLE_UPDATE_CHECKDesabilitar avisos de atualização de versão mais recente do npmnão definido
GITHITS_TELEMETRYEmitir diagnósticos de tempo locais para stderrnão definido

Referência completa: https://docs.githits.com/cli/environment-variables

Estrutura do Código-Fonte

Este repositório contém a CLI do GitHits e o pacote MCP reutilizável:

  • src/ - Comandos da CLI, autenticação local, fluxos de configuração e inicialização do MCP stdio local
  • packages/mcp/ - pacote público @githits/mcp para APIs de servidor MCP neutras em transporte, registro de ferramentas, instruções e auxiliares de teste de fumaça
  • packages/core-internal/ - implementação de workspace compartilhada usada pela CLI e pelo pacote MCP
  • docs/ - notas de implementação e diretrizes para contribuidores
  • scripts/ - validação de pacotes, testes de fumaça e utilitários de desenvolvimento

Consulte CHANGELOG.md para alterações lançadas, trabalho pendente e o impacto atual da versão do pacote.

Desenvolvimento

Requisitos:

  • Node.js ^20.18.1 || >=22.13.0
  • Bun

Comandos comuns:

bun install
bun run dev --help
bun test
bun run typecheck
bun run build

Ao alterar ferramentas MCP, comandos CLI, formatadores compartilhados, envelopes de autenticação/erro ou comportamento de paridade MCP/CLI, execute também os conjuntos de testes de fumaça relevantes:

bun run smoke:mcp
bun run smoke:cli

O CI também verifica o produto compilado sem credenciais ou chamadas de backend ao vivo. Execute as mesmas verificações localmente após bun run build:

bun run smoke:cli:built
bun run smoke:mcp:built

O harness permanece no Bun, enquanto os subprocessos do produto executam dist/cli.js com node de PATH. O CI provisiona esse runtime a partir de .node-version.

Ao alterar instruções MCP, descrições de ferramentas ou comportamento voltado ao agente, use as avaliações de agente direcionadas descritas em eval/agentic/README.md:

bun run agent:e2e

Licença

Apache-2.0