--- title: 'Hermes : les skills sur mesure' url: https://blog.guigpap.com/fr/hermes/skills/ url_md: https://blog.guigpap.com/fr/hermes/skills.md category: hermes date: '2026-08-04' maturite: production techno: - telegram - odoo - n8n application: - ai - knowledge - operations --- # Hermes : les skills sur mesure > Le système de skills de Hermes et les douze procédures écrites pour ce déploiement — diagnostic VPS, qualification CRM Odoo, mémoire, extension par plugins ## 1. Quoi ? — Définition et contexte Les [32 outils MCP](/fr/hermes/outils-mcp/) disent à [Hermes](/fr/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 ```yaml --- 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. ### 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 ### 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 ? 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 ### 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 | 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). > **Tip - Human-in-the-loop écrit dans la skill** > > Sa contrainte la plus intéressante est explicite dès l'overview : la skill *peut* analyser, scorer, recommander une étape, proposer des modifications Odoo et rédiger une relance — mais elle **ne doit pas** écrire dans Odoo, créer une activité, changer une étape ou produire un message sortant final sans confirmation explicite de l'action exacte. > > C'est le même patron que les garde-fous du system prompt sur `docker_manage`, appliqué au domaine commercial : les outils rendent l'écriture possible, la procédure impose de demander d'abord. `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 | 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](/fr/hermes/memoire-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 | 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 : > **Caution - Ne jamais patcher /opt/hermes** > > L'arbre applicatif `/opt/hermes` est géré par l'image. Toute modification y est perdue à la prochaine mise à jour — silencieusement, ce qui est pire. Les personnalisations locales vont sous `$HERMES_HOME/plugins/`, soit `/opt/data/plugins/` ici, et s'activent par l'allow-list `plugins.enabled`. > > C'est exactement la même logique que le mode wrapper de Mnemosyne : tout ce qui doit survivre aux mises à jour vit dans le bind mount, jamais dans l'image. Elles sont l'outillage qui a produit les [plugins](/fr/hermes/plugins/) décrits par ailleurs — l'agent documente la façon de s'étendre lui-même, puis s'en sert. ### Cycle de vie ```bash 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](/fr/infrastructure/database-backup/) avec le reste du répertoire de données. > **Note - Une skill n'est pas un contrat** > > Contrairement à un outil MCP, dont le schéma est appliqué par la plomberie, une skill est du texte que le modèle est invité à suivre. Elle rend un comportement beaucoup plus probable, pas certain. Les garanties dures restent ailleurs : whitelist d'actions côté N8N, confinement des chemins, filtrage du canal admin. --- ## 4. Et si ? — Perspectives et limites ### 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 **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. --- ## Pages liées ### Hermes - [Hermes Agent](/fr/hermes/) — Le déploiement et le system prompt - [Outils MCP](/fr/hermes/outils-mcp/) — Ce que les skills pilotent - [Plugins](/fr/hermes/plugins/) — Le code, là où les skills sont du texte - [Mémoire Mnemosyne](/fr/hermes/memoire-mnemosyne/) — Gouvernée par `mnemosyne-operations` ### Workflows - [CRM Pipeline & Lead Scoring](/fr/workflows/crm-automation/) — Le pendant workflow de `odoo-lead-qualification` - [Voice Transcription](/fr/workflows/voice-transcription/) — L'autre chemin de transcription, côté N8N ### Référence - [Glossaire](/fr/reference/glossary/) — Agent autonome, MCP, LLM ## Métadonnées agent - Cet article est issu du blog GuiGPaP Lab. - Contexte global du blog: https://blog.guigpap.com/llms.txt - Contact auteur: https://odoo.guigpap.com/mon-cv - Licence: CC-BY-SA 4.0