Pour soumettre un audit d’architecture global ou une revue de sécurité multi-fichiers à un modèle à large fenêtre de contexte (comme Gemini 2.5 Pro à 2 millions de tokens ou Claude Opus), copier-coller des fichiers un par un fait perdre la topologie du projet.
Repomix (yamadashy/repomix) automatise cette étape en compilant l’intégralité d’un dépôt Git en un artefact unique, structuré en XML ou Markdown, nettoyé par Tree-sitter et contrôlé contre les fuites de secrets via Secretlint.
Comment fonctionne Repomix
Contrairement à une simple concaténation find . -exec cat {} +, Repomix applique quatre filtres d’ingénierie avant de produire le fichier de contexte :
- Respect natif de
.gitignoreet.repomixignore: exclusion automatique des dossiersnode_modules/,venv/,.git/, binaires, caches et artefacts de build. - Garde-fou de sécurité (
Secretlint) : analyse préventive de chaque fichier pour bloquer l’export si une clé privée SSH/PEM, un jeton AWS/GCP ou un secret.envest détecté. - Compression syntaxique (
--compressvia Tree-sitter) : possibilité d’extraire uniquement les signatures de fonctions, classes, structures et docstrings en omettant le corps d’implémentation, réduisant le volume de tokens d’environ 70 % tout en conservant la carte exacte de l’architecture.
Commandes utiles au quotidien
Repomix s’exécute directement via npx ou une installation globale légère :
# Générer un export XML optimisé pour Claude / Gemini avec vérification des secrets
npx repomix --style xml --output repo-context.xml
# Mode compressé Tree-sitter (idéal pour les très gros dépôts > 100k lignes)
npx repomix --compress --style markdown --output arch-signatures.md
# Cibler uniquement un sous-module critique avec comptage des fichiers les plus lourds
npx repomix --include "backend/services/**/*.py,scripts/*.py" --top-files-len 15
–> Couplé à un graphe structurel local (Graphify), Repomix permet de fournir à un modèle d’arbitrage un dossier d’architecture complet, reproductible et garanti sans secret en moins de trois secondes.
Caractéristiques
| Fonctionnalité | Script cat / find artisanal | Copier-Coller IDE | Repomix (yamadashy/repomix) |
|---|---|---|---|
Respect de .gitignore & binaires | ❌ Manuel et fragile | Partiel | ✅ Automatique & natif |
| Protection anti-fuite de secrets | ❌ Aucune | ❌ Aucune | ✅ Secretlint intégré par défaut |
Compression AST (Tree-sitter) | ❌ Impossible | ❌ Impossible | ✅ Mode --compress (-70 % tokens) |
| Format balisé optimisé LLM | Texte brut ambigu | Blocs Markdown | ✅ XML (<file path="...">) / MD / JSON |
| Audit du poids en tokens par fichier | ❌ Absent | ❌ Absent | ✅ Rapport Top-N Tiktoken intégré |
| Commande | Description |
|---|---|
`npx repomix --style xml`
| Empaquette le dépôt courant au format XML structuré avec arborescence complète en en-tête. |
`npx repomix --compress`
| Utilise Tree-sitter pour ne conserver que les signatures de fonctions et types (-70 % de tokens). |
`npx repomix --remote user/repo`
| Clone et empaquette directement un dépôt GitHub distant sans polluer le workspace local. |
`npx repomix --include 'src/**/*.rs'`
| Restreint l'empaquetage aux seuls fichiers correspondant au pattern glob spécifié. |
