Aller au contenu
Développement medium

Plugins Claude Code : packager et partager ses skills

9 min de lecture

Logo Claude Code - packager des skills en plugin

Une skill projet vit dans .claude/skills/ et se partage par git avec le dépôt. Pratique pour une équipe sur un même projet, mais limité dès que vous voulez réutiliser une skill sur plusieurs projets, la versionner ou la distribuer à d'autres. La réponse de Claude Code est le plugin : un dossier autonome qui empaquette skills, agents, hooks et serveurs MCP, installable et mis à jour comme une dépendance. Ce guide montre comment packager une skill en plugin, le publier et le sécuriser, avec un lab vérifié.

  • Distinguer une skill projet d'un plugin distribuable
  • Packager une skill dans un plugin avec son manifeste
  • Publier le plugin via un marketplace git et l'installer
  • Versionner un plugin et auditer un plugin tiers avant installation
  • Savoir créer une skill et structurer une skill avancée
  • Un dépôt git pour héberger le marketplace
  • Claude Code à jour (lab vérifié en v2.1.152)

Une skill projet est faite pour un dépôt. Un plugin est fait pour le partage. Trois différences comptent.

Le namespacing : une skill de plugin s'invoque nom-du-plugin:nom-de-la-skill, ce qui évite les collisions entre skills de provenances différentes. Le versioning : un plugin porte une version, et les utilisateurs ne reçoivent une mise à jour que lorsque vous la publiez. La distribution : un plugin s'installe d'une commande depuis un marketplace, sans copier-coller de dossiers.

En clair : tant que la skill sert votre projet, gardez-la dans .claude/skills/. Dès qu'elle doit voyager entre projets ou personnes, faites-en un plugin.

Un plugin est un dossier avec un manifeste .claude-plugin/plugin.json à sa racine, et les composants à côté (pas dans .claude-plugin/). Voici le plugin du lab, qui empaquette une skill notes-release :

  • Répertoireboite-a-outils/
    • Répertoire.claude-plugin/
      • plugin.json
    • Répertoireskills/
      • Répertoirenotes-release/
        • SKILL.md

Le manifeste minimal ne requiert qu'un name ; les autres champs sont des métadonnées utiles :

{
"name": "boite-a-outils",
"description": "Skills utilitaires : génération de notes de version à partir des commits.",
"version": "0.1.0",
"author": { "name": "Stéphane Robert" },
"license": "MIT",
"keywords": ["release", "changelog", "git"]
}

Un plugin peut contenir bien plus que des skills : des agents (agents/), des hooks (hooks/), des serveurs MCP (.mcp.json), des binaires (bin/). C'est ce qui en fait un format de distribution complet, pas seulement un sac de skills.

La skill notes-release créée précédemment se range telle quelle dans skills/notes-release/SKILL.md. Claude Code fournit un validateur natif pour vérifier la structure avant publication :

Fenêtre de terminal
claude plugin validate ./plugins/boite-a-outils
Validating plugin manifest: .../plugins/boite-a-outils/.claude-plugin/plugin.json
✔ Validation passed

Le validateur contrôle le manifeste et le frontmatter des skills, agents et hooks embarqués. Lancez-le systématiquement avant de publier : il attrape les fautes de chemin et de frontmatter que vous ne verriez qu'à l'installation.

Pour distribuer le plugin, vous le déclarez dans un marketplace : un dépôt git contenant un fichier .claude-plugin/marketplace.json qui liste vos plugins.

{
"name": "demo-marketplace",
"owner": { "name": "Stéphane Robert" },
"plugins": [
{
"name": "boite-a-outils",
"source": "./plugins/boite-a-outils",
"description": "Skills utilitaires : génération de notes de version.",
"category": "development"
}
]
}

Le source en chemin relatif suppose que les plugins vivent dans le même dépôt que le marketplace. Il accepte aussi un dépôt github, une url git, ou un sous-dossier de monorepo. Le marketplace se valide comme le plugin :

Fenêtre de terminal
claude plugin validate .
Validating marketplace manifest: .../.claude-plugin/marketplace.json
✔ Validation passed

Une fois le dépôt poussé, n'importe qui l'ajoute et installe le plugin :

/plugin marketplace add votre-org/votre-depot
/plugin install boite-a-outils@demo-marketplace

L'interface /plugin regroupe la découverte, les plugins installés et les marketplaces. Le marketplace officiel claude-plugins-official est disponible d'emblée ; on y trouve par exemple le plugin skill-creator, qui aide à créer et tester des skills, installable par /plugin install skill-creator@claude-plugins-official.

Deux modes coexistent. Si le manifeste porte un champ version, le plugin est épinglé à cette chaîne : vos utilisateurs ne reçoivent une mise à jour que lorsque vous incrémentez la version. Si vous omettez version, Claude Code utilise le SHA du commit git : chaque commit devient de fait une nouvelle version.

Pour un plugin partagé en équipe, préférez une version explicite (0.1.0, 0.2.0) : elle rend les mises à jour intentionnelles et lisibles, là où le suivi par commit propage le moindre changement.

C'est le point à ne jamais négliger. Un plugin peut embarquer des hooks, des serveurs MCP et des binaires ajoutés au PATH : il exécute donc du code arbitraire avec vos privilèges. La documentation officielle est explicite : n'installez de plugins et n'ajoutez de marketplaces que depuis des sources de confiance, car Anthropic ne contrôle pas leur contenu.

Trois réflexes concrets :

  • Inspectez avant d'installer. Les versions récentes affichent un écran « Will install » listant précisément les commandes, agents, skills, hooks et serveurs MCP ajoutés. Lisez-le.
  • Traitez un plugin comme une dépendance, pas comme une config : il mérite la même revue qu'un paquet npm. Cela rejoint la logique de la supply chain logicielle.
  • Verrouillez côté organisation si besoin : le réglage strictKnownMarketplaces (managed settings) limite les marketplaces autorisés, sans que les utilisateurs puissent l'outrepasser.
SymptômeCause probableCorrection
Validation failed sur le pluginComposants dans .claude-plugin/Déplacer skills/ etc. à la racine du plugin
Plugin introuvable à l'installNom du plugin différent entre manifeste et marketplaceAligner le name des deux fichiers
Chemin source rejetéChemin relatif sans ./ ou avec ../Utiliser ./plugins/... depuis la racine du marketplace
Skill du plugin non invocableOubli du namespaceInvoquer plugin:skill, pas juste skill
Mise à jour non propagéeversion non incrémentéeBumper le champ version du manifeste
  • Une skill projet sert un dépôt ; un plugin sert le partage, le versioning et la distribution.
  • Le manifeste .claude-plugin/plugin.json ne requiert qu'un name ; les composants vont à la racine, pas dans .claude-plugin/.
  • Un marketplace est un dépôt git avec .claude-plugin/marketplace.json qui liste vos plugins.
  • claude plugin validate vérifie plugin et marketplace avant publication : utilisez-le.
  • Versionnez explicitement un plugin d'équipe plutôt que de suivre les commits.
  • Un plugin exécute du code : inspectez l'écran « Will install » et n'installez que des sources de confiance.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn