HomeRessources, Guides & Actualités – Actualités de l’intelligence artificielleMemoRepomix : Emballez votre Code Source pour les Modèles d’Intelligence Artificielle

Repomix : Emballez votre Code Source pour les Modèles d’Intelligence Artificielle

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

OptionDescription
-v, –versionAffiche la version courante de l’outil.
–verboseActive le journal d’activité détaillé (logs de débogage).
–quietMasque toutes les sorties de la console, sauf les erreurs.
–stdoutEnvoie le résultat directement dans la sortie standard du terminal.
–copyCopie 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é.
–compressCompresse le code grâce à une analyse structurelle sélective.
–remove-commentsSupprime tous les commentaires du code source traité.
–remove-empty-linesRetire 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).
–mcpDé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 :

  1. Fichiers de configuration TypeScript : repomix.config.ts
  2. Fichiers JavaScript : repomix.config.js
  3. 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éeRôle du traitement
**/*.jsonjq -c . {file}Supprime tous les espaces blancs superflus du JSON.
**/*.svgnpx svgo -i {file} -o -Optimise et allège le code XML des fichiers vectoriels.
**/*.ipynbjupyter 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.

Leave a Reply

Your email address will not be published. Required fields are marked *