Formatos de Saída
O Repomix suporta quatro formatos de saída:
- XML (padrão)
- Markdown
- JSON
- Texto simples
Formato XML
bash
repomix --style xml
O formato XML é otimizado para processamento por IA:
xml
Este arquivo é uma representação consolidada de toda a base de código...
<file_summary>
(Metadados e instruções para IA)
</file_summary>
<directory_structure>
src/
index.ts
utils/
helper.ts
</directory_structure>
<files>
<file path="src/index.ts">
// Conteúdo do arquivo aqui
</file>
</files>
<git_logs>
<git_log_commit>
<date>2025-08-20 00:47:19 +0900</date>
<message>feat(cli): Add --include-logs option for git commit history</message>
<files>
README.md
src/cli/cliRun.ts
src/core/git/gitCommand.ts
src/core/git/gitLogHandle.ts
src/core/output/outputGenerate.ts
</files>
</git_log_commit>
<git_log_commit>
<date>2025-08-21 00:09:43 +0900</date>
<message>Merge pull request #795 from yamadashy/chore/ratchet-update-ci</message>
<files>
.github/workflows/ratchet-update.yml
</files>
</git_log_commit>
</git_logs>
Por que XML como formato padrão?
O Repomix usa XML como formato de saída padrão com base em pesquisas e testes extensivos. Esta decisão é fundamentada em evidências empíricas e considerações práticas para análise de código assistida por IA.
Nossa escolha do XML é principalmente influenciada por recomendações oficiais dos principais provedores de IA:
- Anthropic (Claude): Recomenda explicitamente o uso de tags XML para estruturar prompts, afirmando que "Claude foi exposto a tais prompts durante o treinamento" (documentação)
- Google (Gemini): Recomenda formatos estruturados incluindo XML para tarefas complexas (documentação)
- OpenAI (GPT): Defende o uso de prompting estruturado em cenários complexos (anúncio, cookbook)
Formato Markdown
bash
repomix --style markdown
O Markdown oferece formatação legível:
markdown
Este arquivo é uma representação consolidada de toda a base de código...
# Resumo do Arquivo
(Metadados e instruções para IA)
# Estrutura de Diretórios
```
src/
index.ts
utils/
helper.ts
```
# Arquivos
## Arquivo: src/index.ts
```typescript
// Conteúdo do arquivo aqui
```
# Logs do Git
```
2025-08-20 00:47:19 +0900|feat(cli): Add --include-logs option for git commit history
README.md
src/cli/cliRun.ts
src/core/git/gitCommand.ts
src/core/git/gitLogHandle.ts
src/core/output/outputGenerate.ts
2025-08-21 00:09:43 +0900|Merge pull request #795 from yamadashy/chore/ratchet-update-ci
.github/workflows/ratchet-update.yml
```
Formato JSON
bash
repomix --style json
O formato JSON fornece saída estruturada e programaticamente acessível com nomes de propriedades em camelCase:
json
{
"fileSummary": {
"generationHeader": "Este arquivo é uma representação consolidada de toda a base de código, combinada em um único documento pelo Repomix.",
"purpose": "Este arquivo contém uma representação empacotada do conteúdo completo do repositório...",
"fileFormat": "O conteúdo está organizado da seguinte forma...",
"usageGuidelines": "- Este arquivo deve ser tratado como somente leitura...",
"notes": "- Alguns arquivos podem ter sido excluídos com base nas regras do .gitignore..."
},
"userProvidedHeader": "Texto de cabeçalho personalizado se especificado",
"directoryStructure": "src/
cli/
cliOutput.ts
index.ts
config/
configLoader.ts",
"files": {
"src/index.js": "// Conteúdo do arquivo aqui",
"src/utils.js": "// Conteúdo do arquivo aqui"
},
"instruction": "Instruções personalizadas do instructionFilePath"
}
Benefícios do Formato JSON
O formato JSON é ideal para:
- Processamento programático: Fácil de analisar e manipular com bibliotecas JSON em qualquer linguagem de programação
- Integração de API: Consumo direto por serviços web e aplicações
- Compatibilidade com ferramentas de IA: Formato estruturado otimizado para aprendizado de máquina e sistemas de IA
- Análise de dados: Extração direta de informações específicas usando ferramentas como
jq
Trabalhando com Saída JSON usando jq
O formato JSON facilita a extração programática de informações específicas. Aqui estão exemplos comuns:
Operações Básicas de Arquivos
bash
# Listar todos os caminhos de arquivo
cat repomix-output.json | jq -r '.files | keys[]'
# Contar o número total de arquivos
cat repomix-output.json | jq '.files | keys | length'
# Extrair conteúdo de arquivo específico
cat repomix-output.json | jq -r '.files["README.md"]'
cat repomix-output.json | jq -r '.files["src/index.js"]'
Filtragem e Análise de Arquivos
bash
# Encontrar arquivos por extensão
cat repomix-output.json | jq -r '.files | keys[] | select(endswith(".ts"))'
cat repomix-output.json | jq -r '.files | keys[] | select(endswith(".js") or endswith(".ts"))'
# Obter arquivos contendo texto específico
cat repomix-output.json | jq -r '.files | to_entries[] | select(.value | contains("function")) | .key'
# Criar lista de arquivos com contagem de caracteres
cat repomix-output.json | jq -r '.files | to_entries[] | "\(.key): \(.value | length) caracteres"'
Extração de Metadados
bash
# Extrair estrutura de diretórios
cat repomix-output.json | jq -r '.directoryStructure'
# Obter informações do resumo de arquivos
cat repomix-output.json | jq '.fileSummary.purpose'
cat repomix-output.json | jq -r '.fileSummary.generationHeader'
# Extrair cabeçalho fornecido pelo usuário (se existir)
cat repomix-output.json | jq -r '.userProvidedHeader // "Nenhum cabeçalho fornecido"'
# Obter instruções personalizadas
cat repomix-output.json | jq -r '.instruction // "Nenhuma instrução fornecida"'
Análise Avançada
bash
# Encontrar maiores arquivos por comprimento de conteúdo
cat repomix-output.json | jq -r '.files | to_entries[] | [.key, (.value | length)] | @tsv' | sort -k2 -nr | head -10
# Pesquisar arquivos contendo padrões específicos
cat repomix-output.json | jq -r '.files | to_entries[] | select(.value | test("import.*react"; "i")) | .key'
# Extrair caminhos de arquivos que coincidem com múltiplas extensões
cat repomix-output.json | jq -r '.files | keys[] | select(test("\.(js|ts|jsx|tsx)$"))'
Formato de Texto Simples
bash
repomix --style plain
Estrutura de saída:
text
Este arquivo é uma representação consolidada de toda a base de código...
================
Resumo do Arquivo
================
(Metadados e instruções para IA)
================
Estrutura de Diretórios
================
src/
index.ts
utils/
helper.ts
================
Arquivos
================
================
Arquivo: src/index.ts
================
// Conteúdo do arquivo aqui
================
Logs do Git
================
2025-08-20 00:47:19 +0900|feat(cli): Add --include-logs option for git commit history
README.md
src/cli/cliRun.ts
src/core/git/gitCommand.ts
src/core/git/gitLogHandle.ts
src/core/output/outputGenerate.ts
2025-08-21 00:09:43 +0900|Merge pull request #795 from yamadashy/chore/ratchet-update-ci
.github/workflows/ratchet-update.yml
Uso com Modelos de IA
Cada formato funciona bem com modelos de IA, mas considere:
- Use XML para Claude (melhor precisão de análise)
- Use Markdown para leitura geral
- Use JSON para processamento programático e integração de API
- Use Texto Simples para simplicidade e compatibilidade universal
Customização
Defina o formato padrão no repomix.config.json
:
json
{
"output": {
"style": "xml",
"filePath": "output.xml"
}
}