Sommaire
Dans Claude Code, un ensemble de skills, de sous-agents, de hooks et de configuration MCP constitue un plugin. Un catalogue indiquant le nom des plugins et où les obtenir est une marketplace. Ensemble, ils permettent de réutiliser des procédures entre projets ou de partager un même jeu d’extensions au sein d’une équipe.
Cet article vous accompagne de l’installation d’un plugin existant à la création d’une skill de salutation et à sa distribution par un catalogue. Retenez trois distinctions : (1) le plugin et son catalogue de distribution occupent des niveaux différents ; (2) enregistrer un catalogue et installer un plugin sont deux opérations distinctes ; (3) une commande de validation réussie ne garantit ni le bon fonctionnement ni la sécurité. Les étapes suivent le guide officiel de création.
Regrouper des fonctions, puis les distribuer
— Choisissez skills, agents, hooks et intégrations MCP dans un catalogue
Un plugin est un ensemble de fonctions ; une marketplace est son catalogue de distribution, par exemple un dépôt Git.
Enregistrez le catalogue → installez les plugins séparément → vérifiez les fonctions nécessaires.
Pour vos propres créations, validez le plugin et le catalogue avant de les distribuer.
1. Que sont les plugins de Claude Code ?
Un plugin rassemble des extensions de Claude Code dans un répertoire partageable et réutilisable. Tous les composants ne sont pas nécessaires : un plugin peut ne contenir qu’une skill.
| Composant | Emplacement | Rôle |
|---|---|---|
| Skills | skills/<name>/SKILL.md | Procédures sélectionnées automatiquement selon leur description et leurs réglages, ou par invocation explicite de l’utilisateur (Comprendre les Skills) |
| Commandes slash | commands/ | Ancien format Markdown. Elles sont désormais traitées comme des skills ; skills/ est recommandé pour les nouvelles créations |
| Sous-agents | agents/ | Définitions d’agents aux rôles distincts. Vérifiez leur chargement sous Custom Agents dans /context |
| Hooks | hooks/hooks.json | S’exécutent selon les événements et conditions configurés, par exemple PostToolUse |
| Serveurs MCP | .mcp.json | Connexions aux outils et données externes (MCP) |
| Manifeste | .claude-plugin/plugin.json | Nom, description, version et autres métadonnées. Facultatif si seule la structure standard est utilisée |
Pour vos procédures personnelles, le répertoire .claude/skills/ du projet peut suffire. Les plugins sont utiles pour distribuer le même ensemble à plusieurs endroits et gérer ses mises à jour. Des extensions comme la prise en charge de LSP et la surveillance existent aussi, avec des conditions liées à l’environnement et au mode de distribution. Une petite skill est plus facile à créer et à vérifier pour commencer.
2. Structure d’un plugin
Voici la structure standard d’un plugin individuel. Si vous fournissez un manifeste, placez-le dans .claude-plugin/plugin.json ; skills/, agents/ et hooks/ se trouvent à la racine du plugin lui-même. Le catalogue de distribution, marketplace.json, est distinct. L’exemple suivant le place dans .claude-plugin/marketplace.json de la marketplace.
my-plugin/
├── .claude-plugin/
│ └── plugin.json # métadonnées de ce plugin
├── skills/
│ └── code-review/SKILL.md
├── agents/
│ └── security-reviewer.md
├── hooks/hooks.json
├── .mcp.json
└── README.md
Voici un exemple de plugin.json. Vous pouvez omettre entièrement le manifeste si vous utilisez uniquement la structure standard des répertoires. Si vous en fournissez un, name est obligatoire ; la description et la version sont facultatives.
{
"name": "my-first-plugin",
"description": "Un plugin de salutation pour apprendre les bases",
"version": "1.0.0",
"author": { "name": "Votre nom" }
}
Le name devient aussi l’espace de noms de la skill : dans cet exemple, invoquez /my-first-plugin:hello. Pour une distribution mise en cache via Git, la version de plugin.json est prioritaire, puis vient celle du plugin dans le catalogue. Si aucune n’existe, le SHA du commit résolu de la source est utilisé. Laisser une version explicite inchangée signifie qu’une simple modification du code ne rend pas le plugin admissible à une mise à jour. Le chargement direct depuis un répertoire local et les sources de type command suivent d’autres règles. Consultez la documentation sur la gestion des versions.
3. Utiliser /plugin et les marketplaces
Commencez par /plugin. Cette commande ouvre un gestionnaire avec les onglets Discover, Installed, Marketplaces et Errors. Voici les commandes de base :
# Ajouter une marketplace (catalogue de distribution)
/plugin marketplace add anthropics/claude-plugins-official
/plugin marketplace add ./my-marketplace # chemin local
/plugin marketplace add https://example.com/marketplace.json
# Choisir la portée dans l’interface, installer et vérifier l’activation
/plugin install plugin-name@marketplace-name
/plugin enable plugin-name@marketplace-name
/plugin disable plugin-name@marketplace-name
/plugin uninstall plugin-name@marketplace-name
# Installés via des marketplaces (filtrer avec --enabled / --disabled)
/plugin list
/plugin list --enabled
# Recharger les changements si nécessaire et vérifier le résultat
/reload-plugins
Ajouter un catalogue n’installe aucun plugin à lui seul. Installez-les individuellement après l’enregistrement. La commande interactive /plugin install permet de choisir la portée dans la vue détaillée. La commande shell claude plugin install utilise user par défaut ; indiquez --scope pour la changer.
Après l’installation, vérifiez si le résultat indique actif, en attente de rechargement ou erreur de chargement. Le rechargement peut être différé en raison de son effet sur le cache du prompt. Dans les sessions sans terminal, les changements MCP d’un plugin peuvent ne prendre effet qu’à la session suivante. /plugin list ne couvre que les installations par marketplace, pas tout ce qui vient de la synchronisation ou des répertoires de skills. Consultez les conditions d’installation et de rechargement et, si MCP ne se connecte pas, le dépannage des erreurs de connexion MCP.
4. Qu’est-ce qu’une marketplace ?
Une marketplace est un catalogue doté d’un .claude-plugin/marketplace.json répertoriant les plugins et leurs sources, fourni via un dépôt Git, un chemin local ou un fichier hébergé. Il existe des catalogues officiels et communautaires.
Marketplaces officielle et communautaire
• Officielle (claude-plugins-official) : sélectionnée par Anthropic. Elle est enregistrée automatiquement au premier lancement interactif, mais une utilisation non interactive antérieure, des restrictions réseau ou des politiques d’organisation peuvent empêcher cet enregistrement. Si elle manque, vérifiez ces conditions et utilisez /plugin marketplace add anthropics/claude-plugins-official dans un environnement qui l’autorise. Parcourez Discover dans /plugin ou le répertoire officiel.
• Communautaire (claude-community) : catalogue de propositions ayant passé une validation automatique et un examen de sécurité. Son dépôt est anthropics/claude-plugins-community ; ajoutez-le avec /plugin marketplace add anthropics/claude-plugins-community. Installez avec /plugin install name@claude-community. Ne confondez pas le nom du dépôt avec le nom enregistré du catalogue.
Si un catalogue manque, vérifiez son enregistrement ; si un plugin précis manque, vérifiez son nom et sa source. Pour un catalogue interne, il faut aussi que les utilisateurs puissent accéder au dépôt et au plugin lui-même. Quand vous distribuez un fichier JSON par URL, le contenu des plugins situé à des chemins relatifs n’est pas récupéré depuis cette URL.
5. Créer et publier son propre plugin
Cet exemple crée une skill de salutation. Commencez par la structure suivante. Le répertoire .claude-plugin extérieur appartient au catalogue ; celui à l’intérieur appartient au plugin individuel. Exécutez les commandes depuis le répertoire parent contenant my-marketplace.
my-marketplace/
├── .claude-plugin/
│ └── marketplace.json
└── plugins/
└── my-first-plugin/
├── .claude-plugin/
│ └── plugin.json
└── skills/
└── hello/
└── SKILL.md
(1) Enregistrez le JSON de la section précédente dans le fichier intérieur my-marketplace/plugins/my-first-plugin/.claude-plugin/plugin.json. (2) Enregistrez le contenu suivant dans my-marketplace/plugins/my-first-plugin/skills/hello/SKILL.md. L’exemple utilise disable-model-invocation: true pour que la skill ne soit utilisée que sur invocation explicite.
---
name: hello
description: Faire une courte salutation avec un nom
disable-model-invocation: true
---
Saluez brièvement l’utilisateur.
Si des arguments sont fournis, incluez ce nom dans la salutation.
Arguments : $ARGUMENTS
(3) Écrivez le catalogue dans le fichier extérieur my-marketplace/.claude-plugin/marketplace.json. Les chemins relatifs de source sont résolus par rapport à la racine de la marketplace, et non au répertoire contenant marketplace.json.
{
"name": "my-plugins",
"owner": { "name": "Votre nom" },
"description": "Catalogue d’exercice pour distribuer une skill de salutation",
"plugins": [
{
"name": "my-first-plugin",
"source": "./plugins/my-first-plugin",
"description": "Une skill qui fait une courte salutation avec un nom"
}
]
}
(4) Validez séparément le catalogue et le plugin. La première vérification porte sur le schéma du catalogue et le plugin.json des entrées locales, mais ne lit pas chaque fichier de skill ou de hook. La seconde couvre aussi les fichiers des répertoires standard du plugin individuel. Aucune ne garantit la bonne exécution ni la sécurité.
claude plugin validate ./my-marketplace
claude plugin validate ./my-marketplace/plugins/my-first-plugin
# Charger le plugin individuel dans cette session pour le tester
claude --plugin-dir ./my-marketplace/plugins/my-first-plugin
Dans la session interactive ouverte, exécutez /my-first-plugin:hello Alex et vérifiez qu’une courte salutation inclut Alex. Un contrôle fonctionnel consiste à examiner la sortie et rechercher des effets indésirables, pas seulement constater que la commande est visible. Si le chargement échoue, vérifiez les noms dans les deux JSON, le chemin source ainsi que l’emplacement et le frontmatter de SKILL.md.
(5) Pour tester aussi la voie du catalogue, fermez la session de test précédente et lancez Claude Code sans --plugin-dir. Les commandes suivantes enregistrent des entrées dans votre configuration : essayez-les dans un projet d’exercice en choisissant la portée d’installation.
/plugin marketplace add ./my-marketplace
/plugin install my-first-plugin@my-plugins
/my-first-plugin:hello Alex
(6) Pour distribuer votre création, publiez le contenu de my-marketplace à la racine d’un dépôt Git que les utilisateurs peuvent récupérer. Commitez le répertoire plugins aussi bien que le catalogue. Les utilisateurs ajoutent le véritable owner/repo et installent le même my-first-plugin@my-plugins. Cette structure à chemins relatifs fonctionne avec un enregistrement via Git ou un répertoire local ; elle ne peut pas servir telle quelle avec l’URL isolée d’un marketplace.json. Consultez la création, la distribution et la validation des catalogues.
Vous n’avez pas besoin de demander une inscription au catalogue officiel pour distribuer via votre propre dépôt Git. Si vous souhaitez aussi figurer dans le catalogue communautaire, les auteurs individuels peuvent utiliser le formulaire de soumission de la Console. Le formulaire de claude.ai exige une organisation Team/Enterprise et des droits d’administration. Soumettre à community est distinct d’une inscription au catalogue officiel sélectionné par Anthropic.
6. Portées d’installation et sécurité
Les portées d’installation sont user (tous vos projets), project (réglages partagés du projet) et local (vous seul dans ce projet). Distinguez le choix interactif de la portée du défaut user de la CLI shell. Les réglages managed sont contrôlés par les administrateurs et limitent les modifications de configuration des utilisateurs.
Les équipes peuvent partager sources et état d’activation via extraKnownMarketplaces et enabledPlugins dans .claude/settings.json. Toutefois, écrire des réglages partagés ne revient pas à terminer l’installation sur l’ordinateur de chaque membre. Chacun doit installer les plugins de sources externes. Après avoir accordé votre confiance au projet, vérifiez l’enregistrement du catalogue, les autorisations d’accès et le résultat de l’installation dans chaque environnement.
⚠️ Sécurité : les plugins peuvent exécuter du code arbitraire
Les consignes officielles de sécurité expliquent que les plugins peuvent exécuter du code arbitraire avec vos privilèges. Les éléments du catalogue communautaire passent par une validation automatique et un examen de sécurité, mais cela ne garantit pas le comportement attendu. Vérifiez l’éditeur, les skills, les hooks et les serveurs MCP inclus. Les organisations peuvent limiter les sources des catalogues avec strictKnownMarketplaces dans les réglages managed ; un tableau vide refuse les sources de marketplaces, y compris l’officielle. Ce réglage ne surveille pas toutes les opérations réseau ou sur les fichiers effectuées par un plugin. Les voies telles que la synchronisation depuis claude.ai ont aussi leurs réglages distincts.
Résumé
Un plugin est une unité de distribution d’extensions ; une marketplace est son catalogue. L’utilisateur enregistre le catalogue → installe chaque plugin → vérifie l’activation et le comportement. L’auteur prépare plugin et catalogue → valide les deux → invoque la fonction → distribue via un dépôt accessible. Vérifier les portées, les autorisations d’accès et la version utilisée pour les mises à jour facilite la reproduction ailleurs.
L’enregistrement automatique du catalogue officiel dépend de conditions, et les propositions examinées ne bénéficient pas d’une garantie inconditionnelle de fonctionnement. Commencez par une fonction nécessaire, vérifiez le résultat, puis élargissez. Les mécanismes voisins sont présentés dans Hooks de Claude Code, Claude Agent Skills, MCP et Artifacts de Claude Code.
Questions fréquentes
Q. Quelle différence entre un plugin et une skill ?
R. Une skill est une procédure à exécuter ; un plugin est une unité de distribution qui la regroupe avec des hooks, une configuration MCP et d’autres composants. Invoquez explicitement une skill de plugin avec /plugin-name:skill-name. La sélection automatique dépend de sa description et de ses réglages.
Q. Je ne trouve pas la marketplace officielle.
R. L’officielle, claude-plugins-official, est enregistrée automatiquement au premier lancement interactif, mais une utilisation non interactive antérieure, des restrictions réseau ou des politiques gérées peuvent l’empêcher. Dans un environnement qui l’autorise, essayez /plugin marketplace add anthropics/claude-plugins-official. Enregistrer le catalogue n’installe pas les plugins individuels.
Q. Tout le monde peut-il distribuer un plugin qu’il a créé ?
R. Une possibilité est de placer le plugin et le catalogue dans son propre dépôt Git accessible. Demander une inscription à community est une autre démarche ; les auteurs individuels peuvent utiliser le formulaire de la Console. La soumission via claude.ai impose des conditions d’organisation et de droits. Vérifiez aussi que source dans le catalogue pointe vers l’emplacement réel du plugin.
Q. Pourquoi mon plugin ne se met-il pas à jour après une modification du code ?
R. Pour une distribution mise en cache via Git, la version de plugin.json a la priorité maximale. Changer uniquement la version du catalogue en conservant celle-ci ne met pas le plugin à jour. Si aucun ne fournit de version, le SHA du commit Git résolu est utilisé, mais les opérations de mise à jour et la référence source comptent aussi. Le chargement direct depuis un répertoire local, les sources archive et les sources command suivent d’autres règles.
Q. Un plugin est-il sûr si validate réussit ?
R. Non. Valider la structure et la configuration est distinct de tester le comportement réel et la sécurité. Valider seulement le catalogue n’inspecte pas le corps des skills ni les fichiers similaires. Validez le plugin individuel et testez ses fonctions et ses effets secondaires. L’examen pour une inscription à community ne remplace pas non plus la vérification de l’éditeur et du code inclus.