Pourquoi un skill tout neuf renvoie zéro résultat dans une recherche


Vous venez de repérer un petit skill bien pratique dans un fil communautaire — par exemple « transformer les actions à mener d’un rapport hebdomadaire en checklist » — et son auteur dit qu’il est publié sur skills.sh. Vous ouvrez un terminal, confiant :

hermes skills search weekly-report

Zéro résultat. Vous essayez un autre mot-clé. Toujours zéro. Vous commencez alors à douter de votre orthographe, ou de l’existence même du skill. Une demi-heure plus tard, vous l’installez depuis le lien du fil, et il fonctionne parfaitement.

Rien ne cloche chez vous, ni chez le skill. Le chemin que prend une recherche et la question « ce skill existe-t-il » ne sont simplement pas la même question.

La recherche s’exécute en deux passes

Une recherche sans filtre — CLI, TUI et dashboard compris — est servie par un index central qui couvre les registres externes. Cet index est reconstruit périodiquement, ce qui signifie qu’il répond à « ce qui existait lors de la dernière construction », pas à « ce qui existe maintenant ».

Cela laisse une fenêtre. Un skill publié il y a quelques minutes n’est probablement pas encore dans l’index.

Un changement fusionné le 16 septembre traite cette fenêtre : lorsque l’index renvoie zéro correspondance pour votre requête, Hermes interroge aussi directement skills.sh, ClawHub, LobeHub et des endpoints bien connus. Pour reprendre les mots de la documentation, un skill publié il y a quelques minutes apparaît quand même.

Quelques limites de ce repli méritent d’être retenues :

  • Au plus 8 secondes. Il ne reçoit qu’une part du budget de recherche, afin qu’un registre lent ne transforme pas un échec en longue attente ;
  • Il ne se déclenche que si l’index s’est réellement terminé avec zéro résultat. Un index qui a expiré ne le déclenche pas — une distinction que le même changement a corrigée, sans quoi le dashboard accusait à tort skills.sh et ClawHub d’avoir expiré ;
  • Les filtres de provider ne le déclenchent pas. Un filtre comme --source nvidia correspond à des sources fournies, et ces registres ne portent aucune donnée de provider, ce qui donnerait quatre appels réseau vides à coup sûr ;
  • GitHub ne fait pas partie du repli. La raison est pratique : une seule faute de frappe consommerait sinon tout le quota GitHub horaire d’un utilisateur non authentifié. Pour chercher dans des taps GitHub personnalisés, demandez-les explicitement.

Vous voulez une réponse précise ? Nommez la source

hermes skills search accepte --source, et la liste est plus longue qu’on ne l’imagine :

hermes skills search kubernetes                 # toutes les sources
hermes skills search react --source skills-sh   # uniquement le répertoire skills.sh
hermes skills search report --source clawhub    # uniquement ClawHub
hermes skills search --source official          # uniquement les skills optionnels officiels

Les sources disponibles incluent official, skills-sh, well-known, github, clawhub, lobehub, browse-sh, plus celles regroupées par provider comme nvidia, openai, anthropic, huggingface, voltagent, gstack et minimax — l’ensemble complet figure dans --help.

Deux commandes sœurs méritent leur place : hermes skills browse parcourt tout page par page (les skills officiels d’abord), et hermes skills inspect <name> vous montre ce que fait un skill avant que vous ne l’installiez. Ajoutez --json à une recherche quand vous voulez une sortie structurée pour un script.

L’index lui-même a aussi été corrigé : un shard expiré ne mange plus de skills

Le repli est un pansement ; la vraie correction consiste à rendre l’index fiable. Le travail des 17 et 18 septembre ciblait une classe de bug : traiter une récupération échouée comme « il n’y a plus de données ».

  • Le catalogue de ClawHub avance par curseur. Quand une page expirait ou renvoyait autre chose qu’un 200, l’ancien code y voyait la fin du catalogue, et tous les skills restants disparaissaient. Il réessaie désormais.
  • Le sitemap de skills.sh est récupéré par shards. Un shard échoué était lu comme un shard vide, et le catalogue partiel qui en résultait était écrit dans le cache partagé — faisant disparaître des skills de la recherche pour tout le monde jusqu’à expiration du cache. Désormais un shard échoué est réessayé, et s’il reste muet la tranche partielle est renvoyée sans être mise en cache.
  • Le délai du CI est passé de 50 minutes à 120. Le commit explique pourquoi avec une précision inhabituelle : depuis le 17 septembre, ClawHub sert environ une page de 200 éléments toutes les 10 secondes (contre environ 2,5 auparavant), donc le parcours d’environ 400 pages prend à lui seul 60-70 minutes. Les exécutions planifiées des 17 et 18 septembre ont été annulées à 50 minutes alors que le crawl continuait, et une autre s’est arrêtée à 12 145 skills — sous le plancher de 20 000 — après une seule page en échec. Les deux moitiés devaient être corrigées pour que l’index soit publié à nouveau.

Alors la prochaine fois qu’une recherche ne donne rien, procédez dans cet ordre

Un : relancez la recherche, sans rien changer. Si le skill vient d’être publié, le repli aurait dû poser la question — mais un budget de 8 secondes fait qu’un seul registre lent peut encore le faire passer à côté.

Deux : nommez la source. --source clawhub ou --source skills-sh envoie la requête directement à ce répertoire et contourne entièrement la fraîcheur de l’index.

Trois : cherchez explicitement sur GitHub. Les taps personnalisés ne sont pas dans le repli ; utilisez --source github.

Quatre : vérifiez que vous cherchez bien un skill. Si ce que vous voulez est un plugin — le genre qui ajoute des outils, des hooks ou des adaptateurs de plateforme — c’est un autre pipeline : épinglé par SHA, relu par un humain, et couvert dans l’article sur le catalogue de plugins.

Pour la vue d’ensemble — comment le répertoire de skills est structuré, external_dirs, et où atterrissent les skills créés par l’agent via skills.create_dir — voir l’article sur le répertoire de création de skills. La surface complète des commandes se trouve dans la référence de la commande skills.

En version courte : ne pas voir quelque chose n’est pas la même chose que ce quelque chose n’existe pas. La recherche a toujours été index plus repli, et les deux moitiés ont eu droit à une sérieuse ronde de réparations à la mi-septembre — donc la prochaine fois que vous obtenez zéro résultat, demandez-vous si ce que vous voulez se trouve dans l’ensemble qu’elle peut réellement atteindre.