Routeur de compétences

Routeur de compétences. Utiliser UNIQUEMENT lorsque le message de l'utilisateur contient "/route" (au début, à la fin, ou envoyé seul après une demande) ; jamais de votre propre initiative. Sélectionne les 1 à 5 meilleures compétences parmi toutes les compétences installées pour la demande de l'utilisateur, indique lesquelles sont chargées et pourquoi, les charge, effectue le travail, puis suggère les compétences à exécuter ensuite et quand. "/route build" crée le catalogue personnel de compétences (exécuté une fois), "/route refresh" le resynchronise après l'installation ou la suppression de compétences.

Qu'est-ce que Routeur de compétences ?

Ce routeur de compétences est un outil conçu pour les agents IA comme Claude Code, Cursor ou Codex, permettant de sélectionner et charger dynamiquement les compétences (skills) les plus pertinentes pour une demande utilisateur donnée. Il analyse le message contenant le mot-clé "/route", identifie la demande sous-jacente, puis parcourt le catalogue de compétences installées (stocké dans `~/.claude/route-catalog/` ou via la variable d'environnement `$ROUTE_CATALOG_DIR`) pour choisir entre 1 et 5 compétences optimales. Le routeur gère également la création (`/route build`) et la mise à jour (`/route refresh`) du catalogue personnel. Il présente un plan sous forme de tableau avant le chargement, exécute les compétences dans l'ordre, vérifie les résultats, enregistre un journal d'exécution et suggère les prochaines compétences à utiliser. Il respecte les règles définies dans le projet (CLAUDE.md) et les préférences utilisateur (PROFILE.md). Ce skill est utile pour tout développeur ou utilisateur d'agent IA qui souhaite orchestrer efficacement plusieurs compétences sans intervention manuelle, en s'assurant que chaque partie de la demande est couverte par la compétence la plus appropriée.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/medjbilou/claude-skill-router/tree/HEAD/skills/route

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Route

Arguments : $ARGUMENTS

<base> ci-dessous désigne le "Répertoire de base pour cette compétence" (chemin affiché ci-dessus). Le script est <base>/scripts/inventory.py. Le catalogue personnel se trouve dans ~/.claude/route-catalog/ (ou dans $ROUTE_CATALOG_DIR), jamais à l'intérieur du plugin.

0. Trouver la demande

L'utilisateur écrit une invite normale et y ajoute /route. Déterminez la demande à partir de ses propres mots :

  • /route est dans le même message que l'invite (avant ou après) : la demande est l'intégralité du message sans le mot /route.
  • /route a été envoyé seul : la demande est le message précédent de l'utilisateur (ou les messages, s'ils appartiennent à la même tâche), lu avec la conversation. Ne traitez jamais le mot seul "/route" comme la demande.
  • Les arguments ci-dessus contiennent du texte : traitez-le comme la demande ou une partie de celle-ci, mais le propre message de l'utilisateur prévaut en cas de différence.
  • Si vous avez déjà commencé cette demande avant l'arrivée de /route, examinez ce qui est fait, et acheminez uniquement le travail restant. Ne refaites pas les étapes terminées.
  • Si la demande est build, lisez <base>/BUILD.md et suivez-le. Si c'est refresh, passez directement à Refresh.

Conservez l'invite de l'utilisateur comme tâche. Ne la réduisez pas à la partie couverte par une seule compétence : chaque partie de l'invite doit être couverte par une compétence chargée ou par votre propre travail.

1. Comprendre la demande

Écrivez une ligne pour vous-même : l'objectif, le livrable, la technologie ou les fichiers impliqués, et la phase (planifier, construire, déboguer, réviser, vérifier, livrer, documentation, média, opérations). Utilisez la conversation : une demande comme "corrige ça" ou "fais la vidéo" fait référence à ce qui vient d'être discuté. N'explorez pas encore la base de code.

Sortie anticipée : si la demande est triviale (un renommage, une correction d'une ligne, une simple question), affichez "Aucune compétence nécessaire : " et effectuez la tâche. Ne lisez pas le catalogue.

Si le CLAUDE.md du projet exige une première étape avant tout travail (par exemple "recherchez le texte d'erreur dans le runbook avant de diagnostiquer"), exécutez cette étape maintenant. Son résultat peut modifier les compétences nécessaires.

2. Trouver les candidats

  1. Exécutez python3 <base>/scripts/inventory.py --check depuis le répertoire courant.
    • NO CATALOG : dites à l'utilisateur que le routeur a besoin d'un /route build unique, proposez de l'exécuter maintenant, et pendant ce temps, traitez la demande avec les compétences que vous voyez dans votre propre liste de compétences.
    • Sinon, il affiche catalog in sync, ou les NOUVELLES compétences (installées, pas dans le catalogue, avec leur description) et les entrées SUPPRIMÉES (non installées). Les NOUVELLES compétences sont des candidats valides. Ne choisissez jamais une compétence SUPPRIMÉE.
  2. Si --check signale la présence de surcharges, lisez ce fichier en premier. Il contient les propres règles d'acheminement de l'utilisateur ("polissage UI -> better-ui, jamais impeccable"). Une surcharge qui correspond à la demande l'emporte sur le catalogue, ses choix par défaut et votre propre jugement. Mentionnez la surcharge dans la colonne Pourquoi.
  3. Dans le dossier du catalogue que --check affiche sur sa première ligne, lisez INDEX.md et, s'il est présent, PROFILE.md (la pile et les habitudes de l'utilisateur).
  4. Choisissez les 1 à 3 catégories qui correspondent à la demande et lisez uniquement ces fichiers de catégorie. Chaque ligne de compétence se lit ainsi : - `nom` [charger] UTILISER : ... | PAS : ... | SUIVANT : ... | BESOINS : ...

3. Choisir l'ensemble

  • Choisissez le plus petit ensemble qui couvre toute la demande : généralement 1 à 3 compétences, jamais plus de 5.
  • Une compétence par tâche. Ne chargez jamais deux compétences qui font la même tâche ; suivez les "Choix par défaut" de la catégorie.
  • Respectez le champ PAS de chaque compétence. Si PAS nomme une meilleure compétence pour cette demande, prenez celle-là.
  • Pour la même tâche, préférez une compétence de projet ([projet], depuis .claude/skills de ce dépôt) ou une des propres compétences personnalisées de l'utilisateur à une compétence générique.
  • Si une compétence liste des BESOINS qui sont absents ici, dites-le et choisissez la meilleure compétence suivante.
  • Si aucune compétence n'ajoute de valeur réelle, dites "Aucune compétence nécessaire" et effectuez la tâche.
  • Si deux lectures très différentes de la demande mènent à des compétences différentes, posez une question courte avec les options avant de charger quoi que ce soit.

4. Afficher le plan, puis charger

Affichez ce tableau sous forme de texte visible avant le premier appel de compétence. C'est une sortie obligatoire, pas une narration : imprimez-le même lorsqu'un style concis ou "pas de texte avant les appels d'outil" est actif.

#CompétencePourquoi celle-ciCharger
1nom-compétenceune ligne liée à la demandecompétence / lire / intégrée / projet

Une ligne peut être conditionnelle : écrivez "uniquement si " dans la colonne Pourquoi et chargez-la seulement lorsque la condition est vraie.

Ajoutez une note "Effet secondaire" sous le tableau pour chaque étape qui envoie des messages, déploie, supprime des données, dépense des crédits payants ou écrit en production, que ce soit une compétence ou le travail lui-même. Demandez avant cette étape. Sinon, continuez sans attendre.

Chargez les compétences dans l'ordre du tableau (planifier d'abord, puis construire, puis vérifier) :

  • [compétence], [intégrée], [projet] : appelez l'outil Compétence avec le nom exact, et passez la partie de la demande que cette compétence doit traiter comme args.
  • [lire <chemin>] : l'outil Compétence refuse cette compétence (utilisateur uniquement). Lisez le fichier à <chemin> et suivez-le comme s'il était chargé.
  • Si un appel de compétence échoue, lisez le SKILL.md de la compétence à la place (inventory.py sans indicateur affiche chaque chemin) et dites-le.

5. Effectuer le travail

Suivez les compétences chargées ensemble. Lorsque deux d'entre elles sont en conflit, la plus spécifique l'emporte pour cette partie de la tâche. Les fichiers CLAUDE.md de l'utilisateur et les instructions explicites priment sur chaque compétence. Si un nouveau besoin apparaît à mi-parcours (par exemple, la correction nécessite une migration), chargez une compétence supplémentaire et annoncez-la en une ligne : "Chargement également de x : ".

6. Vérifier, journaliser, rapporter et suggérer quoi exécuter ensuite

Vérification finale : lorsque deux compétences ou plus ont été chargées ou que la demande comportait plusieurs parties, vérifiez chaque partie avant la réponse finale. Pour chaque compétence chargée, et chaque partie de la demande non couverte par une compétence, évaluez : fait / partiel / bloqué, avec des preuves (un fichier:ligne, un résultat de test, une sortie de commande). Insérez-le dans la réponse finale sous forme de tableau court :

PartieCompétenceStatutPreuve

Si une partie est partielle ou bloquée, dites ce qui manque au lieu de considérer la tâche comme terminée. Sautez le tableau pour une demande à une seule compétence et une seule partie.

Journalisation : exécutez python3 <base>/scripts/inventory.py --log '<json>' une fois, avec un objet JSON : request (la demande en 160 caractères maximum, sans secrets), loaded (compétences chargées), used (compétences chargées dont les instructions ont réellement façonné le travail), unused (chargées mais non nécessaires), skipped (lignes prévues qui n'ont pas été exécutées), next (les compétences Suivantes que vous suggérez), no_skill (vrai si aucune compétence n'était nécessaire), check ("fait", "partiel", "bloqué" ou "n/a"). La journalisation fait partie de l'acheminement, elle n'est pas facultative. Si la commande échoue, dites-le en une ligne et continuez. inventory.py --report montre plus tard ce que /route a chargé, ce que le travail a utilisé et combien de compétences Suivantes l'utilisateur a suivies.

Commencez la réponse finale par une ligne qui indique quelles compétences ont été exécutées, afin que l'utilisateur la voie même si le tableau a défilé : Compétences utilisées : a, b(ajoutez ignoré c : `` lorsqu'une ligne prévue n'a pas été exécutée, ou Compétences utilisées : aucune (<raison>)).

Terminez la réponse finale par cette section :

Compétences suivantes

  • nom-compétence : quand (maintenant / avant commit / avant push / après déploiement / une fois par semaine), et pourquoi.

Donnez-en au maximum 3. Prenez-les des champs SUIVANT des compétences chargées, des "Choix par défaut" des catégories que vous avez lues, et des étapes requises par le CLAUDE.md du projet (par exemple une exécution complète des tests avant push). Ne gardez que celles qui correspondent à ce qui s'est réellement passé, et ne les exécutez pas. Cette section s'applique également lorsqu'aucune compétence n'a été chargée.

Refresh

Exécuté lorsque l'utilisateur installe, supprime ou met à jour des compétences ou des plugins.

  1. Exécutez python3 <base>/scripts/inventory.py --check. S'il affiche NO CATALOG, exécutez plutôt la construction.
  2. Pour chaque NOUVELLE compétence : lisez son SKILL.md (frontmatter et les ~80 premières lignes), choisissez le fichier de catégorie dont le Périmètre correspond (inventory.py liste les catégories fixes dans sa TAXONOMIE), et ajoutez une ligne dans le même format que les autres lignes de ce fichier. Utilisez [lire <chemin absolu>] lorsque son frontmatter contient disable-model-invocation: true, et [projet] lorsqu'elle se trouve dans le .claude/skills d'un dépôt. Si le fichier de catégorie n'existe pas encore, créez-le avec le même en-tête (# nom, Périmètre :, Choix par défaut :).
  3. Pour chaque entrée SUPPRIMÉE : supprimez sa ligne et retirez-la de tout texte "Choix par défaut".
  4. Exécutez inventory.py --index, puis --check à nouveau jusqu'à ce qu'il affiche catalog in sync. Signalez ce qui a été ajouté et supprimé.

Skills associés