Tous les guides

Hermes Agent skills: écrire, installer, superviser

Hermes Agent skills: le format SKILL.md, les huit sources d'installation, les quatre niveaux de confiance, et les cinq choses qui cassent en production.

Illustration pour l'article : Hermes Agent skills: écrire, installer, superviser

Une skill est un document chargé à la demande

Un agent qui sait tout faire coûte cher à chaque tour, parce que tout ce qu'il sait occupe son contexte en permanence. Les skills répondent à ça en gardant le savoir sur le disque et en ne le chargeant qu'au moment utile. La documentation appelle ce mécanisme la divulgation progressive, et il tient en trois niveaux.

NiveauAppelCe qui remonteCoût
0skills_list()nom, description, catégorie de chaque skillenviron 3 000 tokens
1skill_view(name)le contenu complet et ses métadonnéesvariable
2skill_view(name, path)un fichier de référence précisvariable

Le niveau 0 est le seul que l'agent paie à chaque conversation. C'est ce qui permet d'avoir trente skills installées sans que la facture bouge, tant qu'aucune n'est ouverte. La conséquence pratique compte plus que le mécanisme: la description que tu écris dans le frontmatter est la seule chose que l'agent voit avant de décider. Une description vague donne une skill qui ne se déclenche jamais.

Toutes les skills vivent sous ~/.hermes/skills/, décrit dans la documentation comme le répertoire principal et la source de vérité. Le format suit le standard ouvert agentskills.io, donc une skill écrite pour Hermes Agent n'est pas prisonnière de Hermes Agent.

Le format SKILL.md et ce que le frontmatter décide

Une skill est un dossier contenant un fichier SKILL.md obligatoire, plus des sous-dossiers optionnels: references/ pour la documentation longue, templates/ pour les formats de sortie, scripts/ pour les utilitaires, examples/ et assets/. Le nom du dossier devient l'identifiant de la skill.

Le fichier commence par un frontmatter YAML. Deux champs seulement sont obligatoires, le reste sert à décider quand la skill apparaît.

ChampStatutRôle
nameobligatoireidentifiant de la skill
descriptionobligatoirela seule ligne que l'agent lit au niveau 0
versionoptionnelsuivi des évolutions
platformsoptionnelrestreint à macos, linux
metadata.hermes.tagsoptionnelclassement
metadata.hermes.categoryoptionnelregroupement dans la liste
metadata.hermes.configoptionnelréglages exposés, stockés sous skills.config

Le corps du document suit une trame en quatre parties dans les exemples officiels: quand l'utiliser, la procédure, les pièges, la vérification. La section vérification est celle qu'on voit le plus souvent sautée, et c'est la seule qui permet à l'agent de savoir s'il a réussi.

Quatre champs conditionnels décident de l'affichage selon l'outillage disponible. Ils évitent de proposer une procédure que l'agent ne peut pas exécuter.

ChampComportement
requires_toolsetsla skill est masquée si les toolsets listés sont absents
fallback_for_toolsetsla skill est masquée si les toolsets listés sont présents
requires_toolsmême logique, outil par outil
fallback_for_toolsmême logique inversée, outil par outil

Le cas fallback_for_toolsets est le plus utile et le moins évident: il sert à écrire la procédure de repli. Si le toolset web est là, la skill reste invisible. S'il manque, elle apparaît et explique comment faire autrement.

Une skill peut enfin déclarer les variables d'environnement dont elle a besoin, avec un libellé de demande et un lien d'aide. Une fois renseignées, la documentation précise qu'elles sont transmises automatiquement aux bacs à sable execute_code et terminal. C'est pratique et c'est aussi le moment de regarder ce que la skill demande, puisque le secret suivra.

Installer depuis le hub: huit sources, quatre niveaux de confiance

L'installation passe par hermes skills install, et la source décide de presque tout. Huit sont documentées.

SourceIdentifiantCe que c'est
Officielleofficialskills optionnelles du dépôt Hermes
skills.shskills-shl'annuaire public de Vercel
Endpoints connuswell-knownsites publiant /.well-known/skills/index.json
GitHub directgithubn'importe quel dépôt
ClawHubclawhubplace de marché tierce
LobeHublobehubconversion d'un catalogue d'agents
browse.shbrowse-shplus de 200 skills d'automatisation navigateur
URL directeurln'importe quel lien vers un SKILL.md

Les taps GitHub par défaut sont openai/skills, anthropics/skills, huggingface/skills et NVIDIA/skills. Tout ce qui arrive par le hub passe par un scanner de sécurité qui cherche l'exfiltration de données, l'injection de prompt, les commandes destructrices et les signaux de compromission de chaîne d'approvisionnement. Le résultat du scan est ensuite confronté au niveau de confiance de la source.

NiveauSourcePolitique
builtinlivré avec Hermestoujours de confiance
officialoptional-skills/confiance intégrée
trustedtaps par défautpolitique permissive
communitytout le resteblocage contournable par --force

Le point à retenir sur --force: il lève les blocages de prudence, jamais un verdict dangerous. Autrement dit, quand le scanner tranche vraiment, l'option ne sert à rien, et c'est le comportement souhaitable.

Trois commandes suffisent au quotidien. hermes skills check signale ce qui a bougé en amont, hermes skills update réinstalle ce qui a changé, et hermes skills audit repasse le scanner sur ce qui est déjà installé. La dernière est celle qu'on oublie: une skill sûre le jour de l'installation ne le reste pas forcément après une mise à jour du dépôt d'origine.

Arrêter d'écrire du SKILL.md à la main

La commande /learn prend une source et en fait une skill, sans que tu rédiges le fichier. La documentation la présente comme le moyen rapide de transformer en skill réutilisable ce que tu sais déjà, ou une pile de documentation. Quatre formes d'appel sont documentées.

  • un dossier de code, avec un angle: /learn the REST client in ~/projects/acme-sdk, focus on auth + pagination
  • une URL de documentation: /learn https://docs.example.com/api/quickstart
  • ce que l'agent vient de faire: /learn how I just deployed the staging server
  • une procédure dictée, en langage courant

Le point d'implémentation qui compte: /learn ne pose aucun outil supplémentaire dans le modèle. Il construit un prompt guidé par le standard et le passe à l'agent comme un tour normal, qui enregistre le résultat avec l'outil skill_manage. C'est pour ça que la commande marche pareil dans le CLI, la passerelle de messagerie, le TUI et le tableau de bord.

Les bundles servent l'autre besoin, celui de charger plusieurs skills d'un coup. Un fichier YAML sous ~/.hermes/skill-bundles/ liste les skills et peut ajouter une consigne commune, préfixée au contenu chargé. On les gère avec hermes bundles create, list, show, delete et reload.

Deux comportements à connaître avant de s'appuyer dessus. Un bundle l'emporte sur une skill individuelle quand les identifiants entrent en collision, ce qui peut masquer silencieusement une skill que tu croyais appelée. Et une skill absente d'un bundle est ignorée sans erreur, donc un bundle qui référence une skill désinstallée continue de fonctionner en silence, avec un morceau en moins.

Côté appel, jusqu'à cinq skills peuvent être invoquées dans un même message. L'analyse s'arrête au premier jeton qui n'est pas une skill installée, ce qui évite qu'un chemin de fichier commençant par une barre oblique soit avalé au passage.

Quand l'agent écrit ses propres skills

Hermes Agent peut créer, modifier et supprimer des skills tout seul, par l'outil skill_manage. La documentation liste quatre déclencheurs: après une tâche complexe d'au moins cinq appels d'outils, à la découverte d'un enchaînement non trivial, après avoir buté sur des erreurs et trouvé le chemin qui marche, et quand tu le corriges.

ActionUsageParamètres
createnouvelle skillname, content, category optionnel
patchcorrection ciblée, à préférername, old_string, new_string
editréécriture structurellename, content
deletesuppressionname
write_filefichier annexename, file_path, file_content
remove_fileretrait d'un fichier annexename, file_path

La documentation recommande patch plutôt que edit, pour une raison de coût: seul le texte modifié apparaît dans l'appel d'outil. Sur une skill de plusieurs milliers de mots corrigée souvent, la différence se voit sur la facture.

Le comportement par défaut est l'écriture libre. C'est le réglage à changer en premier si l'agent tourne sur un poste partagé ou en production. La porte d'approbation s'active avec skills.write_approval à true, et toutes les écritures partent alors sous ~/.hermes/pending/skills/ en attendant ton avis.

  • /skills pending liste ce qui attend
  • /skills diff <id> affiche le diff complet
  • /skills approve <id> applique, all pour tout
  • /skills reject <id> jette, all pour tout
  • /skills approval on bascule la porte

Un piège de nommage mérite d'être signalé: le réglage skills.guard_agent_created ressemble à une porte d'approbation mais n'en est pas une. C'est un scanner de contenu qui cherche des motifs dangereux, et la documentation précise que les deux réglages sont indépendants. Activer l'un ne donne rien de l'autre.

Les cinq choses qui cassent

Aucune n'est un défaut du projet. Ce sont des comportements documentés qui surprennent quand on les découvre en production plutôt qu'en lisant la page.

  • La limite GitHub à 60 requêtes par heure. Les opérations du hub passent par l'API GitHub, et sans jeton tu es plafonné à 60 requêtes horaires. Un GITHUB_TOKEN dans le fichier .env monte à 5 000. C'est la première panne rencontrée quand on installe une série de skills d'un coup.
  • Les répertoires externes ne protègent rien. On peut ajouter des dossiers via skills.external_dirs, avec expansion du tilde et des variables. La documentation dit explicitement que ce n'est pas une frontière de protection en écriture: l'agent modifie les skills existantes sur place, où qu'elles soient.
  • La précédence locale est silencieuse. Si le même nom existe en local et dans un répertoire externe, la version locale gagne. Un dépôt d'équipe partagé peut donc être neutralisé sur un poste sans que personne ne voie d'erreur.
  • Les chemins inexistants sont ignorés sans bruit. Une faute de frappe dans external_dirs ne produit aucun avertissement, juste des skills qui n'apparaissent jamais.
  • L'isolation par profil vaut aussi pour les skills. Chaque profil a son propre .bundled_manifest sous son HERMES_HOME, donc une réinitialisation lancée sur un profil ne touche pas les autres. Pratique quand on le sait, déroutant quand on cherche pourquoi la commande n'a rien fait.

Sur le retrait, une nuance rassurante: hermes skills opt-out arrête seulement l'alimentation future et ne supprime rien de ce qui est déjà sur le disque. C'est le drapeau --remove qui efface, et uniquement les skills livrées non modifiées.

La règle qu'on applique chez nos clients tient en une phrase: une skill installée depuis une source communautaire se relit avant d'être activée, comme on relirait une dépendance ajoutée au projet. Le scanner attrape beaucoup de choses, il n'attrape pas une procédure plausible qui envoie tes données au mauvais endroit.

FAQ

Une skill Hermes Agent peut-elle exécuter du code ?
Une skill ne s'exécute pas par elle-même, elle contient des instructions que l'agent lit puis applique avec ses propres outils. Elle peut embarquer des scripts sous scripts/ et déclarer des variables d'environnement qui seront transmises aux bacs à sable execute_code et terminal. C'est ce chaînage qui justifie de relire une skill venue de l'extérieur avant de l'activer.
Combien de skills peut-on installer sans faire grimper la facture ?
Le coût permanent est celui du niveau 0, environ 3 000 tokens pour la liste des noms et descriptions. Le contenu complet n'est chargé que lorsque l'agent ouvre une skill. Une bibliothèque large reste donc peu coûteuse, à condition que les descriptions soient assez précises pour que l'agent n'ouvre pas trois skills avant de trouver la bonne.
Comment empêcher l'agent de modifier ses skills tout seul ?
Passez skills.write_approval à true dans la configuration. Les écritures partent alors sous ~/.hermes/pending/skills/ et attendent une approbation via /skills approve. Attention au réglage voisin skills.guard_agent_created, qui est un scanner de contenu et pas une porte d'approbation: les deux sont indépendants.
Le scanner de sécurité suffit-il pour installer n'importe quelle skill ?
Le scanner cherche l'exfiltration de données, l'injection de prompt, les commandes destructrices et les signaux de compromission de chaîne d'approvisionnement, et le drapeau --force ne lève jamais un verdict dangerous. Il reste un filtre automatique: une procédure plausible mais mal orientée passera. Pour une source communautaire, la relecture humaine garde son intérêt.
Pourquoi ma skill n'apparaît-elle jamais dans la liste ?
Trois causes couvrent la plupart des cas. Un champ requires_toolsets qui masque la skill parce que l'outillage attendu est absent, un nom identique à une skill locale qui gagne par précédence, ou un chemin fautif dans skills.external_dirs, ignoré silencieusement. Vérifiez dans cet ordre avant de toucher au contenu.
Peut-on partager des skills dans une équipe ?
Oui, par un tap GitHub. Un dépôt avec un dossier skills/ contenant un sous-dossier par skill s'ajoute avec hermes skills tap add, et le nom du dossier devient l'identifiant d'installation. Le partage par skills.external_dirs fonctionne aussi mais n'empêche pas les modifications locales, et une version locale du même nom l'emporte.
Faut-il repasser un contrôle sur des skills déjà installées ?
Oui, et c'est la commande la plus oubliée. hermes skills check signale ce qui a changé en amont, hermes skills update réinstalle, et hermes skills audit repasse le scanner sur l'existant. Une skill validée au moment de l'installation ne le reste pas si son dépôt d'origine évolue.

Sources et repères

  1. Hermes Agent, Skills System

    Nous Research, 2026

    Le format `SKILL.md`, les trois niveaux de chargement, les huit sources du hub, les niveaux de confiance, l'outil `skill_manage` et la porte d'approbation, relevés le 3 août 2026.

  2. Hermes Agent, README

    Nous Research, 2026

    L'emplacement `~/.hermes/skills/`, la compatibilité agentskills.io et la boucle d'apprentissage. Dépôt à plus de vingt mille commits, à rouvrir avant toute mise à jour.

  3. agentskills.io

    agentskills.io, 2026

    Le standard ouvert que suit le format, ce qui rend une skill réutilisable en dehors de Hermes Agent.

Articles liés

Cadrez votre premier agent IA

20 minutes pour vérifier vos outils, vos données et le premier cas utile. Sans jargon, sans engagement.