Créer une skill personnalisée pour Hermes Agent
Tutoriel pratique pour écrire un SKILL.md Hermes Agent à partir de zéro : frontmatter YAML, les cinq sections clés et comment tester.

Une skill est la plus petite unité de comportement que vous pouvez enseigner à Hermes Agent sans toucher à son code source. C'est un dossier, un fichier markdown et un court en-tête YAML. La documentation officielle de Nous Research décrit ce format comme "portable parce qu'il est simple", et écrire une skill personnalisée prend moins de cinq minutes une fois que vous en connaissez la forme.
Ce guide parcourt cette forme de bout en bout. Vous verrez où vivent les skills sur le disque, ce que doit contenir l'en-tête du SKILL.md, quelles sections l'agent lit vraiment à l'exécution, comment câbler les secrets via required_environment_variables et comment vérifier que la skill s'est bien chargée. Le résultat est une skill que vous pouvez déposer dans ~/.hermes/skills/ et utiliser le jour même.
Où vivent les skills et comment Hermes les trouve
Hermes range les skills sous forme de dossiers plats à l'intérieur de ~/.hermes/skills/. Les skills intégrées y sont copiées à l'installation, et toute skill personnalisée que vous ajoutez est enregistrée immédiatement au prochain redémarrage. L'arborescence est plate :
~/.hermes/skills/
├── backup-check/
│ └── SKILL.md
├── invoice-followup/
│ └── SKILL.md
└── stripe-mrr-digest/
├── SKILL.md
└── helper.py
Le nom du dossier est l'identifiant de la skill. Hermes découvre automatiquement chaque dossier au démarrage et lit le SKILL.md correspondant. Le champ description du frontmatter YAML est ce que l'agent compare à votre message à l'exécution : écrivez-le pour l'agent, pas pour un lecteur humain. Si la description ne décrit pas clairement la condition de déclenchement, la skill ne se déclenchera pas quand vous l'attendez.
Une skill peut inclure des fichiers supplémentaires dans son dossier : un helper Python, un template SQL, une checklist en texte. Hermes ne les exécute pas tout seul. Ils sont là pour que l'agent les lise ou les exécute quand la procédure le lui dit.

Le format du fichier SKILL.md
Chaque skill est un unique fichier markdown. L'en-tête YAML en haut est le bloc de métadonnées, et le corps en markdown est le jeu d'instructions. Voici un squelette minimal que vous pouvez copier :
---
name: backup-check
description: Verify nightly backup archives exist, are non-empty, and pass a quick checksum spot-check on the latest file.
version: 0.1.0
author: [email protected]
required_environment_variables: []
required_credential_files: []
---
Les champs qui comptent dès le premier jour :
name- identique au nom du dossier. En kebab-case, sans espaces.description- une seule phrase qu'Hermes utilise pour décider quand charger la skill. Soyez précis sur la condition de déclenchement ("quand l'utilisateur demande X", "avant d'exécuter Y").version- libre, mais traitez-la comme du semver pour pouvoir l'incrémenter quand le contenu évolue.required_environment_variables- un tableau de noms de secrets qui doivent être définis avant que la skill ne s'exécute. L'agent les demande à la première activation et les écrit dans.env.required_credential_files- chemins vers les jetons OAuth ou les fichiers JSON de comptes de service qui doivent être montés dans le sandbox.
Champs optionnels à connaître : platforms (tableau parmi macos, linux, windows si la skill ne marche que sur certains systèmes), requires_toolsets pour n'afficher la skill que lorsque certains toolsets sont chargés, et fallback_for_toolsets pour l'inverse. La configuration au niveau de la skill vit dans metadata.hermes.config et atterrit sous skills.config dans votre config.yaml pour les préférences non secrètes (chemins, domaines, etc.).
Les cinq sections que l'agent lit vraiment
Sous le frontmatter, le corps markdown est en prose. Hermes n'exige aucune section précise, mais une structure en cinq parties s'est imposée à partir du guide officiel "Working with Skills" et des articles d'auteurs sur dev.to et glukhov.org. L'agent en tire profit parce que chaque partie répond à une question différente à l'exécution.
Quand l'utiliser
Un court paragraphe qui distingue cette skill des autres que l'agent pourrait choisir. Si vous avez une skill invoice-followup et une autre client-update, "quand l'utiliser" est ce qui empêche l'agent de déclencher la mauvaise.
Référence rapide
Une liste à puces des commandes, chemins ou constantes dont dépend la procédure. L'agent la lit avant la procédure pour charger du contexte. Mettez-y vos chemins de fichiers, le nom de votre bucket S3, les noms de variables d'environnement, l'id du chat Telegram de destination.
Procédure
Les étapes numérotées que l'agent doit suivre. Rédigez-les à l'impératif ("exécute X", "si la réponse contient Y, fais Z"). L'agent traite cette section comme une recette et cite ou paraphrase souvent les étapes au fur et à mesure.
Pièges
Les pièges que vous connaissez déjà. Limites de taux, échecs silencieux, bugs de fuseau horaire, ce client unique dont les données ont une forme bizarre. L'agent lit cela comme des garde-fous et avertit ou refuse quand il détecte ces conditions.
Vérification
Comment l'agent confirme qu'il a fait la bonne chose. Un grep, un curl, un checksum, un "montre-moi la dernière ligne". La vérification est ce qui transforme une skill en quelque chose que vous pouvez laisser tourner.
Câbler secrets et credentials
Si votre skill parle à une API, déclarez le secret dans required_environment_variables :
required_environment_variables:
- STRIPE_RESTRICTED_KEY
- SLACK_WEBHOOK_URL
La première fois que la skill s'active, l'agent vous demande chaque valeur et les écrit dans le .env du projet. Elles sont ensuite injectées automatiquement dans les sandboxes (Docker, Modal, runners éphémères). Ne mettez jamais une clé dans la prose : l'agent la collerait à l'exécution et elle finirait dans un log quelque part.
Pour les jetons OAuth ou les fichiers JSON de comptes de service, utilisez required_credential_files :
required_credential_files:
- ~/.config/gcloud/application_default_credentials.json
Ils sont montés dans le sandbox en volumes en lecture seule. L'agent ne les parse pas : il s'assure simplement qu'ils sont présents avant d'exécuter la procédure.
Comment Hermes extrait automatiquement des skills à partir des conversations
Vous pouvez aussi laisser Hermes écrire des skills à votre place. Après une tâche complexe ayant impliqué cinq appels d'outils ou plus, l'outil skill_manage capture le motif qui a fonctionné et l'écrit comme skill réutilisable dans ~/.hermes/skills/. L'agent analyse la conversation, repère le flux réutilisable et émet un SKILL.md dont la procédure reflète ce qu'il a réellement fait.
C'est le mécanisme qui donne l'impression qu'Hermes s'affine à l'usage. La couche de mémoire persistante retient ce dont vous avez parlé ; les skills auto-extraites retiennent comment il a résolu un problème. Les deux couches sont expliquées plus en détail dans notre article sur la mémoire et les skills de Hermes Agent.
Les premières skills auto-extraites sont en général 80 pour cent ce que vous vouliez et 20 pour cent de bruit. Ouvrez le SKILL.md, resserrez la description, enlevez les étapes que l'agent n'a exécutées que par accident, et incrémentez la version. Vous avez désormais une skill éditée à la main qui se déclenche de façon fiable.
Tester une skill de bout en bout
Une fois le SKILL.md en place, redémarrez Hermes (ou exécutez hermes skill reload si votre build le permet). Faites ensuite trois vérifications :
- Demandez à Hermes de lister ses skills. La nouvelle doit apparaître avec le nom et la description que vous avez écrits.
- Envoyez un message qui correspond à la condition de déclenchement. L'agent devrait annoncer qu'il va utiliser la skill avant de faire quoi que ce soit.
- Exécutez l'étape de vérification manuellement. Si la skill écrit un fichier, regardez le fichier. Si elle publie sur un webhook, regardez le webhook.
Si la skill ne charge pas, le YAML est en général le coupable. Une tabulation oubliée ou un deux-points non échappé casse silencieusement le parser du frontmatter. Hermes consigne l'erreur sur stderr au démarrage ; jetez-y un œil la première fois que vous rechargez.

Sautez la plomberie avec Hermes géré
Une skill personnalisée est un fichier markdown, mais faire tourner Hermes lui-même ne l'est pas. Il faut un hôte, une clé chez un fournisseur de modèle, un bot Telegram ou une web UI, une stratégie de sauvegarde pour le dossier des skills et un moyen de tester sans casser votre agent en production.
Hermify est de l'hébergement géré de Hermes Agent qui s'occupe de tout cela. Votre dossier de skills survit aux redémarrages, les clés de modèle vivent dans un stockage chiffré au repos, et vous pouvez combiner les skills personnalisées écrites ici avec les intégrations MCP qu'Hermes parle déjà. Lancez-vous avec Hermify et votre première skill personnalisée peut tourner sur un vrai agent en moins de cinq minutes.
Sources
- Working with Skills - Hermes Agent docs (Nous Research)
- Skills System - Hermes Agent docs (Nous Research)
- What Are Hermes Agent Skills? A Complete 2026 Guide (Hostinger)
- Hermes Agent Skill Authoring - SKILL.md Structure and Best Practices (Glukhov)
- Hermes Agent Skills: How to Create and Manage Custom Skills (Remote OpenClaw)
- Hermes Agent Custom Skill Tutorial: From SKILL.md to Skills Hub (Fastio)
Lancez votre propre agent Hermes
Apportez votre clé API, connectez Telegram et obtenez un agent IA auto-améliorant opérationnel en 60 secondes.
Commencer