Hermes : les skills sur mesure
1. Quoi ? — Définition et contexte
Section intitulée « 1. Quoi ? — Définition et contexte »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.
L’anatomie d’une skill
Section intitulée « L’anatomie d’une skill »---name: odoo-lead-qualificationdescription: Use when scoring Odoo CRM leads.version: 1.0.0author: Hermes Agentlicense: MITmetadata: 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.
L’état du corpus
Section intitulée « L’état du corpus »| Source | Nombre | Origine |
|---|---|---|
builtin | 67 | Embarquées dans l’image Hermes |
local | 77 | Installées ou écrites dans /opt/data/skills/ |
official | 1 | Dé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.
2. Pourquoi ? — Enjeux et motivations
Section intitulée « 2. Pourquoi ? — Enjeux et motivations »Pourquoi pas tout dans le system prompt ?
Section intitulée « Pourquoi pas tout dans le system prompt ? »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 prompt | Skill | |
|---|---|---|
| Présence | Tous les tours | Seulement quand pertinent |
| Contenu adapté | Règles absolues et courtes | Procédures longues et contextuelles |
| Coût | Permanent | À 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.
3. Comment ? — Mise en œuvre technique
Section intitulée « 3. Comment ? — Mise en œuvre technique »Exploitation et diagnostic
Section intitulée « Exploitation et diagnostic »| Skill | Ce qu’elle apporte |
|---|---|
hermes-vps-runtime-diagnostics | Diagnostiquer le comportement de Hermes lui-même : slash commands, gateway, quotas Codex, plugins |
n8n-mcp-workflow-diagnostics | Déboguer les workflows N8N qui exposent des outils MCP, en lecture seule |
mcp-security-hardening | Auditer et durcir une surface d’outils MCP — SSRF, path traversal, tests |
infrastructure-decision-research | Produire 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.
Odoo et métier
Section intitulée « Odoo et métier »| Skill | Ce qu’elle apporte |
|---|---|
odoo-lead-qualification | Scoring de leads CRM sur un modèle hybride freelance/PME |
odoo-project-management | Créer et réconcilier contacts, opportunités, projets, tâches et timesheets depuis des notes ou transcripts |
iphone-contact-event-export | Gé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.
Mémoire et contenu
Section intitulée « Mémoire et contenu »| Skill | Ce qu’elle apporte |
|---|---|
mnemosyne-operations | Choisir la bonne couche mémoire, éviter les écritures bruyantes, exporter vers Obsidian |
transcriptor-fr-voice | Nettoyer un transcript STT français, puis exécuter la demande corrigée |
swarm-research | Recherche 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.
Extension de Hermes
Section intitulée « Extension de Hermes »| Skill | Ce qu’elle apporte |
|---|---|
hermes-user-plugins | Construire des plugins persistants greffés sur les hooks du gateway |
hermes-runtime-plugins | Faire 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.
Cycle de vie
Section intitulée « Cycle de vie »docker exec hermes hermes skills list # nom, catégorie, source, confiance, statutLes 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.
4. Et si ? — Perspectives et limites
Section intitulée « 4. Et si ? — Perspectives et limites »Limites actuelles
Section intitulée « Limites actuelles »| Limite | Impact | Mitigation |
|---|---|---|
| Chargement piloté par la description | Une description imprécise = une skill jamais chargée, ou chargée à tort | Descriptions impératives et étroites |
| Pas de test automatisé | Rien ne vérifie qu’une skill produit le comportement attendu | Vérification manuelle en conversation |
| Non versionnées dans Git | Les skills vivent dans un répertoire ignoré par le dépôt | Sauvegarde quotidienne ; portage vers skills/ du dépôt envisageable |
| Corpus généraliste volumineux | 145 skills actives, dont beaucoup sans rapport avec ce déploiement | Élagage possible, sans urgence |
| Aucune garantie d’exécution | Une skill oriente, elle ne contraint pas | Les règles critiques restent dans le system prompt et la plomberie |
Scénarios d’évolution
Section intitulée « Scénarios d’évolution »Si les skills doivent être versionnées :
- Le dépôt a déjà un répertoire
skills/au formatSKILL.mdpartagé, 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 listdonne la source de chaque skill ; lesbuiltinne coûtent rien à laisser en place.- Le tri utile porte sur les
localimportées et jamais déclenchées.
Pages liées
Section intitulée « Pages liées »- Hermes Agent — Le déploiement et le system prompt
- Outils MCP — Ce que les skills pilotent
- Plugins — Le code, là où les skills sont du texte
- Mémoire Mnemosyne — Gouvernée par
mnemosyne-operations
Workflows
Section intitulée « Workflows »- CRM Pipeline & Lead Scoring — Le pendant workflow de
odoo-lead-qualification - Voice Transcription — L’autre chemin de transcription, côté N8N
Référence
Section intitulée « Référence »- Glossaire — Agent autonome, MCP, LLM