> ## Documentation Index
> Fetch the complete documentation index at: https://chatcli.edilsonfreitas.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Filtragem com .chatignore

> Controle quais arquivos e diretórios são enviados como contexto para a IA usando regras estilo .gitignore.

O ChatCLI suporta um sistema de exclusão de arquivos inspirado no `.gitignore`. Isso permite que você refine o contexto enviado para a IA, evitando arquivos irrelevantes como testes, logs, dependências e builds.

## Por que filtrar arquivos?

| Benefício            | Descrição                                                                     |
| -------------------- | ----------------------------------------------------------------------------- |
| **Foco**             | Envia apenas código-fonte relevante, resultando em respostas mais precisas    |
| **Eficiência**       | Economiza tokens, o que reduz custos em APIs pagas                            |
| **Velocidade**       | Processa projetos grandes mais rapidamente ao ignorar arquivos desnecessários |
| **Redução de ruído** | Evita poluir o contexto com arquivos compilados, dependências ou logs         |

***

## O arquivo `.chatignore`

A sintaxe é **idêntica** à do `.gitignore`:

* Linhas que começam com `#` são comentários
* Para ignorar um diretório inteiro, adicione o nome seguido de `/` (ex: `docs/`)
* Use padrões glob (wildcards) para ignorar arquivos (ex: `*_test.go`, `*.log`)

### Exemplo prático

```gitignore theme={"system"}
# Ignorar todos os arquivos de teste do Go
*_test.go

# Ignorar diretórios inteiros
docs/
e2e/
vendor/
node_modules/
dist/
build/

# Ignorar arquivos de configuração de CI e logs
.github/
golangci.yml
*.log

# Ignorar binários e arquivos compilados
*.exe
*.so
*.dylib
```

***

## Hierarquia de precedência

O ChatCLI procura por um arquivo de ignore em uma ordem específica. O **primeiro encontrado** é utilizado e os demais são ignorados:

| Prioridade | Local                                | Descrição                                  |
| ---------- | ------------------------------------ | ------------------------------------------ |
| 1 (maior)  | Variável `CHATCLI_IGNORE`            | Caminho absoluto para um arquivo de regras |
| 2          | `.chatignore` no diretório analisado | Regras específicas do projeto              |
| 3          | `~/.chatcli/.chatignore`             | Regras globais do usuário                  |
| 4 (menor)  | Regras internas padrão               | Ignora `.git`, `node_modules`, etc.        |

### Exemplo com variável de ambiente

```bash theme={"system"}
export CHATCLI_IGNORE="~/configs/meu_ignore_global.txt"
```

<Warning>
  **As regras não são mescladas.** Apenas o primeiro arquivo de ignore encontrado na hierarquia é utilizado. Se você definir `CHATCLI_IGNORE`, os arquivos `.chatignore` do projeto e do diretório global serão ignorados.
</Warning>

***

## Regras padrão

Quando nenhum arquivo `.chatignore` é encontrado, o ChatCLI usa regras internas que já ignoram automaticamente:

* `.git/`
* `node_modules/`
* `vendor/`
* `__pycache__/`
* `.idea/`, `.vscode/`
* Arquivos binários e compilados

***

## Dicas de uso

* Crie um `.chatignore` na **raiz de cada projeto** para regras específicas
* Use o `~/.chatcli/.chatignore` global para regras universais (ex: `.DS_Store`, `Thumbs.db`)
* Combine com `@file --mode smart` para que a IA selecione apenas os arquivos mais relevantes dentro do escopo já filtrado
