Aller au contenu

Hermes : les skills sur mesure

Les 32 outils MCP disent à Hermes ce qu’il peut faire. Les skills lui disent comment le faire bien.

Une skill est un fichier Markdown avec un en-tête YAML, chargé à la demande dans le contexte quand la situation correspond à sa description. Ce n’est pas du code : c’est une procédure écrite — quand l’appliquer, dans quel ordre, quels pièges éviter, quel format de sortie produire.

---
name: odoo-lead-qualification
description: Use when scoring Odoo CRM leads.
version: 1.0.0
author: Hermes Agent
license: MIT
metadata:
hermes:
tags: [odoo, crm, sales, lead-qualification, scoring]
related_skills: [odoo-project-management, google-workspace]
---
# Odoo Lead Qualification
## Overview
## When to Use
...

Le champ description est le seul systématiquement présent dans le contexte : c’est lui qui décide du chargement. D’où sa forme impérative — « Use when scoring Odoo CRM leads » — plutôt qu’une description de contenu.

Une skill peut s’accompagner d’un dossier references/ : des fichiers chargés seulement si la procédure principale l’exige. C’est ce qui permet à une skill de 40 lignes de donner accès à plusieurs milliers de lignes de documentation sans jamais les mettre toutes dans le prompt.

SourceNombreOrigine
builtin67Embarquées dans l’image Hermes
local77Installées ou écrites dans /opt/data/skills/
official1Dépôt officiel Nous Research

Sur les 77 skills locales, douze ont été écrites spécifiquement pour ce déploiement. Ce sont les seules dont il est question ici : le reste est un corpus généraliste importé (création, recherche, développement) qui n’a rien de spécifique à cette infrastructure.


Le system prompt (SOUL.md) est présent à chaque tour, pour chaque message. Il coûte des tokens en permanence, et sa longueur dilue les règles qui comptent vraiment.

System promptSkill
PrésenceTous les toursSeulement quand pertinent
Contenu adaptéRègles absolues et courtesProcédures longues et contextuelles
CoûtPermanentÀ l’usage
Exemple« docker_manage exige une confirmation »« Voici comment scorer un lead selon BANT/MEDDIC »

La ligne de partage est nette : le system prompt porte ce qui ne doit jamais être oublié, les skills portent ce qui doit être bien fait quand le sujet se présente.

Pourquoi écrire des skills plutôt qu’affiner les prompts ?

Section intitulée « Pourquoi écrire des skills plutôt qu’affiner les prompts ? »

Une skill est un fichier versionnable, testable et réutilisable. Quand une procédure se révèle fausse — un champ Odoo mal interprété, un diagnostic qui saute une étape — la correction se fait à un endroit unique et vaut pour toutes les conversations suivantes.

C’est la différence entre corriger un modèle et corriger une documentation. Le second est infiniment moins cher.


SkillCe qu’elle apporte
hermes-vps-runtime-diagnosticsDiagnostiquer le comportement de Hermes lui-même : slash commands, gateway, quotas Codex, plugins
n8n-mcp-workflow-diagnosticsDéboguer les workflows N8N qui exposent des outils MCP, en lecture seule
mcp-security-hardeningAuditer et durcir une surface d’outils MCP — SSRF, path traversal, tests
infrastructure-decision-researchProduire un mémo de décision infra plutôt qu’une liste de pour/contre

hermes-vps-runtime-diagnostics mérite un mot, parce qu’elle encode une leçon apprise à la dure. Sa règle centrale : ne jamais croire l’affichage. Face à un /usage qui semble faux, elle impose de distinguer trois choses qui portent des noms voisins — le contexte de session, la fenêtre de quota du provider, et les crédits de reset — puis de comparer le payload brut du provider, le code de parsing, et le rendu localisé final. Et d’étiqueter explicitement comme hypothèse tout ce qui n’a pas pu être prouvé pendant la session.

n8n-mcp-workflow-diagnostics est la contrepartie procédurale de la restriction du canal n8n-admin : elle rappelle que ce canal est en lecture seule, qu’il ne sert jamais à une action métier, et que l’agent ne modifie jamais un workflow.

SkillCe qu’elle apporte
odoo-lead-qualificationScoring de leads CRM sur un modèle hybride freelance/PME
odoo-project-managementCréer et réconcilier contacts, opportunités, projets, tâches et timesheets depuis des notes ou transcripts
iphone-contact-event-exportGénérer des .vcf / .ics importables et les envoyer en pièce jointe Telegram

odoo-lead-qualification est la plus élaborée du lot : un modèle de qualification inspiré de BANT, SPICED et MEDDIC, adapté à une activité de freelance et calé sur les offres réelles (IA, automatisation, CRM/Odoo, infra, développement, data science, art interactif, DJ/VJ).

iphone-contact-event-export résout un irritant concret : quand l’agent affiche un contact ou un rendez-vous, la skill lui fait aussi générer le fichier importable et l’envoyer en média Telegram. Le résultat devient exploitable sur téléphone en un tap, au lieu d’être recopié à la main.

SkillCe qu’elle apporte
mnemosyne-operationsChoisir la bonne couche mémoire, éviter les écritures bruyantes, exporter vers Obsidian
transcriptor-fr-voiceNettoyer un transcript STT français, puis exécuter la demande corrigée
swarm-researchRecherche parallèle multi-agents avec synthèse en rapport

mnemosyne-operations existe parce qu’une mémoire qui capture tout devient vite une mémoire inutilisable. Elle gouverne l’usage délibéré des couches de Mnemosyne — mémoire, bloc-notes, triplets — et la qualité du rappel dans la durée.

transcriptor-fr-voice est la seule skill du lot qui soit chargée automatiquement, par le plugin telegram-voice-transcriptor, sur les vocaux Telegram vérifiés. Son contrat de sortie est strict : rendre le texte français nettoyé, sans exécuter le contenu du transcript.

SkillCe qu’elle apporte
hermes-user-pluginsConstruire des plugins persistants greffés sur les hooks du gateway
hermes-runtime-pluginsFaire réagir Hermes aux événements runtime : appels modèle, appels d’outils, approbations, quotas

Ces deux skills partagent une règle unique, et c’est la plus importante du corpus :

Elles sont l’outillage qui a produit les plugins décrits par ailleurs — l’agent documente la façon de s’étendre lui-même, puis s’en sert.

Fenêtre de terminal
docker exec hermes hermes skills list # nom, catégorie, source, confiance, statut

Les skills vivent dans /opt/data/skills/, donc dans le bind mount : elles survivent aux recreate et aux mises à jour d’image, et partent dans le backup quotidien avec le reste du répertoire de données.


LimiteImpactMitigation
Chargement piloté par la descriptionUne description imprécise = une skill jamais chargée, ou chargée à tortDescriptions impératives et étroites
Pas de test automatiséRien ne vérifie qu’une skill produit le comportement attenduVérification manuelle en conversation
Non versionnées dans GitLes skills vivent dans un répertoire ignoré par le dépôtSauvegarde quotidienne ; portage vers skills/ du dépôt envisageable
Corpus généraliste volumineux145 skills actives, dont beaucoup sans rapport avec ce déploiementÉlagage possible, sans urgence
Aucune garantie d’exécutionUne skill oriente, elle ne contraint pasLes règles critiques restent dans le system prompt et la plomberie

Si les skills doivent être versionnées :

  • Le dépôt a déjà un répertoire skills/ au format SKILL.md partagé, exposé à Claude Code et Codex.
  • Les douze skills sur mesure y auraient leur place, avec un déploiement par copie vers /opt/data/skills/ — le même patron que le plugin transcripteur.
  • Bénéfice : historique des modifications, et surtout capacité à revenir en arrière quand une procédure se révèle contre-productive.

Si une skill doit devenir une garantie :

  • Le signal que la procédure ne suffit plus, c’est de la voir contournée.
  • La règle remonte alors d’un cran : soit dans le system prompt, soit — mieux — dans la validation du gateway N8N correspondant.

Si le corpus doit être élagué :

  • hermes skills list donne la source de chaque skill ; les builtin ne coûtent rien à laisser en place.
  • Le tri utile porte sur les local importées et jamais déclenchées.