Le traitement des bases de code par les grands modèles de langage (LLM) impose des contraintes de taille et de structure. Je constate chaque jour que soumettre des dizaines de fichiers dispersés à Claude, ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama ou Grok relève du parcours du combattant. C’est ici qu’intervient Repomix, un outil open source conçu pour rassembler, nettoyer et formater votre dépôt en un unique fichier assimilable par les IA.
Une consécration majeure : Repomix est nommé aux JSNation Open Source Awards 2025 dans la catégorie “Powered by AI”.
Pour tester l’outil sans friction, visitez le site officiel repomix.com ou rejoignez les discussions sur le serveur Discord de la communauté.
- Optimisation pour l’IA : Repomix emballe l’intégralité de votre codebase dans un seul fichier structuré.
- Sécurité intégrée : La détection des secrets via Secretlint évite les fuites de clés API ou de mots de passe.
- Prise en charge du protocole MCP : Intégrez votre code aux agents IA comme Claude Code ou Cursor.
- Compression intelligente : Réduisez le nombre de tokens de 70% grâce à l’analyse syntaxique Tree-sitter.
- Flexibilité des formats : Choisissez entre XML, Markdown, JSON ou Texte Brut selon vos besoins.
Fonctionnalités principales
- Formatage pensé pour l’IA : Structure optimisée pour faciliter l’analyse par les réseaux de neurones.
- Calcul des tokens : Affichage précis de la consommation pour respecter les limites de contexte des modèles.
- Simplicité d’exécution : Une seule commande suffit pour consolider votre travail.
- Personnalisation complète : Définition précise des fichiers à inclure ou à ignorer.
- Respect du Git : Prise en compte de vos fichiers .gitignore, .ignore et .repomixignore.
- Sécurité active : Analyse automatisée avec Secretlint pour écarter les données sensibles.
- Compression de code : Option –compress pour extraire les signatures essentielles via Tree-sitter.
Démarrage rapide
Vous pouvez exécuter l’outil en ligne de commande sans installation préalable au sein de votre répertoire de projet :
npx repomix@latest
Si vous préférez une installation globale pour un usage fréquent, utilisez l’un des gestionnaires de paquets suivants :
# Via npm
npm install -g repomix
# Via yarn
yarn global add repomix
# Via bun
bun add -g repomix
# Via Homebrew (macOS/Linux)
brew install repomix
Lancez ensuite la commande de base dans votre terminal :
repomix
Cette action génère un fichier nommé repomix-output.xml dans votre répertoire de travail. Ce document contient l’ensemble de votre code source unifié. Vous pouvez le soumettre à votre assistant IA favori accompagné d’une consigne claire :
“Ce fichier rassemble tous les composants de mon dépôt en un document unique. Je souhaite procéder à une refonte de l’architecture, merci d’analyser le code et de me proposer des pistes d’amélioration.”
Les fonctionnalités de génération de code comme les Artifacts de Claude exploitent pleinement ce fichier unifié pour produire des modifications complexes sur plusieurs fichiers interdépendants.
Utilisation de la plateforme web et des extensions
La plateforme en ligne repomix.com permet de coller le nom de votre dépôt public et d’obtenir le pack en un clic. Vous pouvez y choisir le format de sortie (XML, Markdown, Texte Brut) et obtenir une estimation du volume de tokens.
Des extensions facilitent aussi votre quotidien :
- L’extension officielle pour navigateur web (disponible sur le Chrome Web Store et Firefox Add-ons) ajoute un bouton de capture sur l’interface de GitHub.
- L’extension VSCode “Repomix Runner”, développée par le membre de la communauté massdo, permet de piloter l’outil depuis l’éditeur de code tout en gérant les fichiers de configuration locaux.
Si vous évoluez au sein de l’écosystème Python ou de la science des données, je vous invite à regarder du côté de l’alternative Gitingest, très adaptée à ces flux de travail spécifiques.
Commandes d’utilisation courante
Pour traiter un sous-dossier spécifique :
repomix path/to/directory
Pour filtrer les types de fichiers à l’aide de motifs glob :
repomix --include "src/**/*.ts,**/*.md"
Pour exclure des répertoires temporaires ou des fichiers de log :
repomix --ignore "**/*.log,tmp/"
Pour cibler un dépôt distant sans clonage local préalable :
repomix --remote https://github.com/yamadashy/repomix
# Syntaxe simplifiée pour GitHub
repomix --remote yamadashy/repomix
# Cibler une branche, un tag ou un commit spécifique
repomix --remote https://github.com/yamadashy/repomix --remote-branch main
repomix --remote https://github.com/yamadashy/repomix --remote-branch 935b695
# Utiliser l'URL de la branche ou d'un commit précis
repomix --remote https://github.com/yamadashy/repomix/tree/main
repomix --remote https://github.com/yamadashy/repomix/commit/836abcd7335137228ad77feb28655d85712680f1
Le chaînage de commandes via le flux d’entrée standard (stdin) offre une souplesse remarquable pour filtrer dynamiquement vos fichiers :
# Recherche classique des fichiers TypeScript
find src -name "*.ts" -type f | repomix --stdin
# Utilisation des fichiers suivis par git
git ls-files "*.ts" | repomix --stdin
# Filtrer les fichiers contenant un marquage spécifique
grep -l "TODO" **/*.ts | repomix --stdin
rg -l "TODO|FIXME" --type ts | repomix --stdin
# Combinaison avec fd ou fzf pour une sélection interactive
fd -e ts | repomix --stdin
fzf -m | repomix --stdin
Notez bien que le filtrage via stdin applique tout de même les règles de votre fichier d’exclusion pour éviter tout incident.
Pour intégrer l’historique des modifications de version (historique Git) :
# Inclure les logs de commit (50 par défaut)
repomix --include-logs
# Spécifier la quantité de commits
repomix --include-logs --include-logs-count 10
# Ajouter les différences courantes pour un état des lieux exhaustif
repomix --include-logs --include-diffs
Pour lancer la compression structurelle :
repomix --compress
Pour générer un modèle de fichier de configuration initial :
repomix --init
Exécution sous Docker
L’isolation par conteneur garantit un environnement propre. Voici comment procéder :
# Exécution simple dans le répertoire courant
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix
# Cibler un répertoire interne
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix path/to/directory
# Traiter un projet distant et exporter le résultat localement
docker run -v ./output:/app -it --rm ghcr.io/yamadashy/repomix --remote https://github.com/yamadashy/repomix
Modèles de requêtes (Prompts) pour vos IA
Voici des exemples de structures textuelles à copier pour guider vos interactions avec les modèles linguistiques une fois votre pack généré :
Revue de code et refactoring
Ce fichier contient l’intégralité de mon code source. Examine la structure globale et suggère des axes d’amélioration ou de refactoring, en mettant l’accent sur la maintenabilité et l’évolutivité de l’application.
Production de documentation
À partir des sources présentes dans ce fichier, rédige un guide README.md complet comprenant une description du projet, ses fonctionnalités majeures, les instructions d’installation ainsi que des cas d’utilisation pratiques.
Génération de tests unitaires
Analyse ce code et propose une suite de tests unitaires pour les classes et fonctions principales. Couvre les cas limites ainsi que les scénarios de gestion d’erreurs.
Évaluation de la qualité du code
Vérifie le respect des bonnes pratiques de programmation et des standards industriels au sein de ce projet. Identifie les portions de code perfectibles en termes de lisibilité et d’efficacité, puis formule des propositions concrètes.
Compréhension globale d’une bibliothèque
Voici l’intégralité du code d’une bibliothèque logicielle. Fournis un aperçu complet de son fonctionnement, son rôle principal, ses fonctionnalités majeures et son architecture générale.
Formats d’exportation détaillés
Le choix du format de fichier influence la façon dont l’IA interprète votre architecture technique.
Format XML (Option par défaut)
L’utilisation de balises XML aide grandement à la délimitation des informations. Je vous conseille de lire la documentation d’Anthropic sur l’usage des balises XML pour mesurer l’impact de ce format sur la pertinence des réponses de Claude.
<file_summary>
(Métadonnées et consignes d'utilisation destinées à l'IA)
</file_summary>
<directory_structure>
src/
index.ts
</directory_structure>
<files>
<file path="src/index.js">
// Code source
</file>
</files>
<instruction>
(Consignes personnalisées issues de votre fichier d'instructions)
</instruction>
Format Markdown
Activez ce style avec la commande repomix --style markdown. Il structure les blocs de code de manière humaine et standardisée :
# File Summary
(Métadonnées)
# Repository Structure
```
src/
index.ts
```
# Repository Files
## File: src/index.js
```javascript
// Code source
```
Format JSON
Générez un objet structuré avec repomix --style json. Ce format s’avère idéal pour les analyses automatisées et l’intégration de pipelines logiciels.
{
"fileSummary": {
"generationHeader": "Fichier fusionné par Repomix...",
"purpose": "Représentation consolidée du dépôt...",
"fileFormat": "Organisation du document...",
"usageGuidelines": "Ce fichier est en lecture seule...",
"notes": "Certains fichiers sont exclus..."
},
"userProvidedHeader": "Entête personnalisée",
"directoryStructure": "src/\n index.ts",
"files": {
"src/index.js": "// Contenu du code"
},
"instruction": "Consignes de développement"
}
Ce format JSON se manipule aisément à l’aide de l’outil en ligne de commande jq :
# Lister tous les chemins de fichiers exportés
cat repomix-output.json | jq -r '.files | keys[]'
# Connaître le nombre total de fichiers packés
cat repomix-output.json | jq '.files | keys | length'
# Afficher le contenu d'un fichier en particulier
cat repomix-output.json | jq -r '.files["README.md"]'
# Filtrer les chemins selon leur extension
cat repomix-output.json | jq -r '.files | keys[] | select(endswith(".ts"))'
Format Texte Brut
Utilisez l’option repomix --style plain pour obtenir un rendu textuel minimaliste délimité par des séparateurs horizontaux simples.
Tableau de référence des options CLI
| Option | Description |
|---|---|
| -v, –version | Affiche la version courante de l’outil. |
| –verbose | Active le journal d’activité détaillé (logs de débogage). |
| –quiet | Masque toutes les sorties de la console, sauf les erreurs. |
| –stdout | Envoie le résultat directement dans la sortie standard du terminal. |
| –copy | Copie le résultat dans le presse-papiers du système après exécution. |
| –token-count-tree [seuil] | Affiche l’arborescence enrichie du volume de tokens par fichier. |
| -o, –output <chemin> | Spécifie le nom et l’emplacement du fichier généré. |
| –compress | Compresse le code grâce à une analyse structurelle sélective. |
| –remove-comments | Supprime tous les commentaires du code source traité. |
| –remove-empty-lines | Retire les lignes vides pour condenser le texte au maximum. |
| –split-output <taille> | Découpe la sortie en plusieurs fichiers selon la limite fixée (ex: 1mb). |
| –mcp | Démarre Repomix en tant que serveur Model Context Protocol. |
| –sandbox [dossier] | Restreint les accès du serveur MCP à un espace de travail précis. |
Fonctionnalités avancées de traitement
Compression syntaxique via Tree-sitter
L’activation de l’option --compress ne supprime pas bêtement du texte. Elle analyse le code source à l’aide de bibliothèques de traitement syntaxique pour conserver uniquement les signatures de classes, d’interfaces et de fonctions, en masquant les détails d’implémentation internes.
Un bloc fonctionnel classique :
const calculateTotal = (items: ShoppingItem[]) => {
let total = 0;
for (const item of items) {
total += item.price * item.quantity;
}
return total;
}
Se trouve ainsi transformé après compression :
const calculateTotal = (items: ShoppingItem[]) => {
⋮----
Contrôle granulaire du niveau d’inclusion (output.patterns)
Vous pouvez régler finement le comportement de compression par type de fichier au sein de votre fichier de configuration global en définissant trois comportements distincts :
- Contenu complet (Full content) : Intégration brute sans aucune altération du code.
- Forme compressée (Compressed) : Passage exclusif dans le filtre syntaxique Tree-sitter.
- Arborescence seule (Directory-structure-only) : Le fichier apparaît bien dans la carte du projet, mais son contenu réel n’est pas écrit.
{
"output": {
"compress": false,
"patterns": [
{ "pattern": "docs/**/*", "compress": true },
{ "pattern": "website/**/*", "directoryStructureOnly": true }
]
}
}
Visualisation de l’arborescence des tokens
Pour cibler les fichiers les plus gourmands en espace mémoire au sein des modèles d’IA, lancez la commande suivante :
repomix --token-count-tree 1000
Cette commande dresse une cartographie structurée en limitant l’affichage aux éléments dont le poids dépasse les 1000 tokens.
Intégration du serveur MCP (Model Context Protocol)
Repomix fait office de passerelle applicative directe pour vos outils d’intelligence artificielle en se comportant comme un serveur MCP.
repomix --mcp
Le mode Sandbox
L’utilisation de la directive --sandbox limite les droits de lecture de l’outil à un répertoire de travail unique pour des raisons évidentes de sécurité informatique. Les chemins absolus, les liens physiques externes ainsi que le traitement de projets distants se voient alors désactivés par sécurité.
Déclaration du serveur MCP
Voici un exemple d’intégration au sein de l’utilitaire d’IA en ligne de commande Claude Code :
claude mcp add repomix -- npx -y repomix --mcp
Pour un usage via Docker au sein de vos configurations clientes :
{
"mcpServers": {
"repomix-docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/yamadashy/repomix",
"--mcp"
]
}
}
}
Outils disponibles via MCP
pack_codebase: Emballe un répertoire local en un document exploitable par l’IA.attach_packed_output: Enregistre un fichier XML préexistant pour analyse immédiate.pack_remote_repository: Récupère, clone et emballe un projet externe à partir de son adresse web.read_repomix_output: Lit de manière ciblée des plages de lignes au sein d’un export volumineux.grep_repomix_output: Effectue une recherche par expression régulière dans le fichier consolidé.
Plugins Claude Code
La suite d’outils propose des modules dédiés pour enrichir l’expérience utilisateur sous Claude Code. Installez le dépôt de base :
/plugin marketplace add yamadashy/repomix
Procédez ensuite à l’installation des modules spécialisés :
# Module de communication MCP (Recommandé)
/plugin install repomix-mcp@repomix
# Raccourcis de commandes textuelles
/plugin install repomix-commands@repomix
# Outil d'exploration autonome de code
/plugin install repomix-explorer@repomix
Génération de “Skills” pour agents autonomes
Cette fonction crée un répertoire structuré réutilisable par vos assistants pour leur donner une connaissance immédiate d’un projet technique.
# Génération dans votre espace local
repomix --skill-generate
L’outil génère un dossier structuré comme suit :
.claude/skills/nom-du-projet/
├── SKILL.md # Fiche d'identité et statistiques du projet
└── references/
├── summary.md # Objectifs et répartition linguistique
├── project-structure.md # Liste des fichiers avec volume de lignes
├── files.md # Contenu global prêt pour la recherche textuelle
└── tech-stacks.md # Analyse des dépendances logicielles détectées
Configuration avancée
L’outil recherche vos préférences dans l’ordre de priorité suivant :
- Fichiers de configuration TypeScript :
repomix.config.ts - Fichiers JavaScript :
repomix.config.js - Fichiers JSON standards :
repomix.config.json
L’usage d’une configuration en TypeScript offre l’autocomplétion complète dans votre éditeur favori :
import { defineConfig } from 'repomix';
export default defineConfig({
output: {
filePath: 'export-ia.xml',
style: 'xml',
removeComments: true,
},
ignore: {
customPatterns: ['**/node_modules/**', '**/dist/**'],
},
});
Intégration d’instructions personnalisées
Le paramètre output.instructionFilePath permet de greffer un guide méthodologique en fin de document. Consultez les astuces de traitement des contextes longs d’Anthropic pour comprendre l’intérêt stratégique de placer les consignes d’exécution après les blocs de données brutes.
Processeurs de fichiers externes
Le tableau input.processors permet d’appeler des outils système tiers pour transformer le format ou réduire le poids de fichiers ciblés avant leur intégration finale.
| Masque de fichier (Pattern) | Commande associée | Rôle du traitement |
|---|---|---|
**/*.json | jq -c . {file} | Supprime tous les espaces blancs superflus du JSON. |
**/*.svg | npx svgo -i {file} -o - | Optimise et allège le code XML des fichiers vectoriels. |
**/*.ipynb | jupyter nbconvert --to script --stdout {file} | Convertit un notebook Jupyter en script Python épuré. |
Pour d’évidentes mesures de protection contre l’exécution de scripts malveillants, l’exécution des processeurs est désactivée par défaut lors du traitement de dépôts distants, sauf si l’argument de confiance explicite --remote-trust-config est transmis par l’utilisateur.
Intégration continue avec GitHub Actions
Automatisez la mise à disposition de votre code unifié pour vos équipes de développement grâce à l’action GitHub dédiée. Voici un modèle d’intégration de workflow standard :
name: Consolidation du dépôt avec Repomix
on:
push:
branches: [ main ]
jobs:
pack-repo:
runs-on: ubuntu-latest
steps:
- name: Récupération des sources
uses: actions/checkout@v7
- name: Traitement Repomix
uses: yamadashy/repomix/.github/actions/repomix@main
with:
output: repomix-output.xml
compress: true
- name: Archivage du livrable
uses: actions/upload-artifact@v7
with:
name: export-codebase
path: repomix-output.xml
retention-days: 30
Utilisation sous forme de bibliothèque Node.js
Pour les besoins d’intégration logicielle au sein de vos applications métiers, installez Repomix localement :
npm install repomix
Déclarez et exploitez ensuite les méthodes de traitement au sein de vos scripts applicatifs :
import { runCli } from 'repomix';
async function genererExport() {
const options = {
output: 'export-systeme.xml',
style: 'xml',
compress: true,
quiet: true
};
const resultat = await runCli(['.'], process.cwd(), options);
return resultat.packResult;
}
Lors d’opérations de bundling avancées via des compilateurs comme Rolldown ou esbuild, veillez à exclure la dépendance système tinypool et à copier manuellement les ressources d’analyse structurelle web-tree-sitter.wasm dans votre répertoire de production.