Skip to main content
Contribuições são bem-vindas! O ChatCLI é um projeto open-source licenciado sob a Licença MIT.

Como contribuir

1. Fork e clone

2. Setup do ambiente

3. Crie uma branch

4. Faça suas alterações

  • Siga os padrões de código existentes
  • Adicione testes para novas funcionalidades
  • Mantenha commits pequenos e focados

5. Envie o Pull Request

Abra um Pull Request no repositório principal.

Estrutura do projeto

O código segue uma arquitetura modular com decomposição SOLID. Os principais arquivos monolíticos foram divididos em módulos focados:
  • cli/cli.go (~923 linhas) + 7 arquivos extraídos (cli_helpers.go, cli_history.go, cli_mode.go, cli_output.go, cli_prompt.go, cli_session.go, cli_tools.go)
  • cli/agent_mode.go (~1498 linhas) + 4 arquivos extraídos
  • cli/command_handler.go (~185 linhas) + 4 arquivos extraídos
  • server/handler.go (~420 linhas) + 3 arquivos extraídos
  • cli/context_handler.go (~385 linhas) + 3 arquivos extraídos
Veja a documentação de arquitetura para entender a organização completa dos pacotes e componentes. O projeto conta com 970 testes com 0 falhas, incluindo os pacotes cli/mcp, cli/ctxmgr e llm/fallback.

Compilação com informações de versão

Para builds que injetam versão, commit e data:

Adicionando um novo provedor LLM

  1. Crie um pacote em llm/meuprovedor/
  2. Implemente a interface LLMClient (e ToolAwareClient se suportar tool use)
  3. Adicione auto-registro via init() no llm/registry
  4. Defina as variáveis de ambiente no config/
  5. Adicione traduções i18n em i18n/
O provedor será detectado automaticamente — sem precisar editar blocos switch/case.

Criando um plugin

Veja o guia completo em Sistema de Plugins.

Reportando bugs

Abra uma issue no GitHub com:
  • Versão do ChatCLI (chatcli --version)
  • Sistema operacional e versão do Go
  • Passos para reproduzir
  • Comportamento esperado vs observado
  • Logs relevantes (use LOG_LEVEL=debug)