Cette référence fournit les spécifications techniques complètes du système de plugins Claude Code, incluant les schémas de composants, les commandes CLI et les outils de développement.Un plugin est un répertoire autonome de composants qui étend Claude Code avec des fonctionnalités personnalisées. Les composants de plugin incluent les skills, les agents, les hooks, les serveurs MCP et les serveurs LSP.
Les plugins ajoutent des skills à Claude Code, créant des raccourcis /name que vous ou Claude pouvez invoquer.Emplacement : répertoire skills/ ou commands/ à la racine du pluginFormat de fichier : Les skills sont des répertoires avec SKILL.md ; les commandes sont des fichiers markdown simplesStructure des skills :
Les plugins peuvent fournir des subagents spécialisés pour des tâches spécifiques que Claude peut invoquer automatiquement si approprié.Emplacement : répertoire agents/ à la racine du pluginFormat de fichier : Fichiers markdown décrivant les capacités de l’agentStructure de l’agent :
Signaler un code incorrect
Copier
Demander à l'IA
---name: agent-namedescription: Ce dans quoi cet agent se spécialise et quand Claude devrait l'invoquer---Invite système détaillée pour l'agent décrivant son rôle, son expertise et son comportement.
Points d’intégration :
Les agents apparaissent dans l’interface /agents
Claude peut invoquer les agents automatiquement en fonction du contexte de la tâche
Les agents peuvent être invoqués manuellement par les utilisateurs
Les agents de plugin fonctionnent aux côtés des agents Claude intégrés
Les plugins peuvent fournir des gestionnaires d’événements qui répondent automatiquement aux événements de Claude Code.Emplacement : hooks/hooks.json à la racine du plugin, ou en ligne dans plugin.jsonFormat : Configuration JSON avec des correspondances d’événements et des actionsConfiguration des hooks :
Les plugins peuvent regrouper des serveurs Model Context Protocol (MCP) pour connecter Claude Code avec des outils et services externes.Emplacement : .mcp.json à la racine du plugin, ou en ligne dans plugin.jsonFormat : Configuration standard du serveur MCPConfiguration du serveur MCP :
Vous cherchez à utiliser des plugins LSP ? Installez-les depuis la marketplace officielle : recherchez « lsp » dans l’onglet Découvrir de /plugin. Cette section documente comment créer des plugins LSP pour les langages non couverts par la marketplace officielle.
Les plugins peuvent fournir des serveurs Language Server Protocol (LSP) pour donner à Claude une intelligence de code en temps réel lors du travail sur votre base de code.L’intégration LSP fournit :
Diagnostics instantanés : Claude voit les erreurs et les avertissements immédiatement après chaque modification
Navigation de code : aller à la définition, trouver les références et les informations au survol
Sensibilisation au langage : informations de type et documentation pour les symboles de code
Emplacement : .lsp.json à la racine du plugin, ou en ligne dans plugin.jsonFormat : Configuration JSON mappant les noms des serveurs de langage à leurs configurationsFormat du fichier .lsp.json :
Mappe les extensions de fichier aux identifiants de langage
Champs optionnels :
Champ
Description
args
Arguments de ligne de commande pour le serveur LSP
transport
Transport de communication : stdio (par défaut) ou socket
env
Variables d’environnement à définir au démarrage du serveur
initializationOptions
Options transmises au serveur lors de l’initialisation
settings
Paramètres transmis via workspace/didChangeConfiguration
workspaceFolder
Chemin du dossier de l’espace de travail pour le serveur
startupTimeout
Temps maximum d’attente du démarrage du serveur (millisecondes)
shutdownTimeout
Temps maximum d’attente de l’arrêt gracieux (millisecondes)
restartOnCrash
S’il faut redémarrer automatiquement le serveur en cas de plantage
maxRestarts
Nombre maximum de tentatives de redémarrage avant d’abandonner
Vous devez installer le binaire du serveur de langage séparément. Les plugins LSP configurent comment Claude Code se connecte à un serveur de langage, mais ils n’incluent pas le serveur lui-même. Si vous voyez Executable not found in $PATH dans l’onglet Erreurs de /plugin, installez le binaire requis pour votre langage.
Plugins gérés (lecture seule, mise à jour uniquement)
Les plugins utilisent le même système de portée que les autres configurations de Claude Code. Pour les instructions d’installation et les drapeaux de portée, consultez Installer des plugins. Pour une explication complète des portées, consultez Portées de configuration.
Le fichier .claude-plugin/plugin.json définit les métadonnées et la configuration de votre plugin. Cette section documente tous les champs et options pris en charge.Le manifeste est optionnel. S’il est omis, Claude Code découvre automatiquement les composants dans les emplacements par défaut et dérive le nom du plugin du nom du répertoire. Utilisez un manifeste quand vous devez fournir des métadonnées ou des chemins de composants personnalisés.
Si vous incluez un manifeste, name est le seul champ obligatoire.
Champ
Type
Description
Exemple
name
string
Identifiant unique (kebab-case, pas d’espaces)
"deployment-tools"
Ce nom est utilisé pour l’espace de noms des composants. Par exemple, dans l’interface utilisateur, l’agent agent-creator pour le plugin avec le nom plugin-dev apparaîtra comme plugin-dev:agent-creator.
Version sémantique. Si elle est également définie dans l’entrée de la marketplace, plugin.json a la priorité. Vous n’avez besoin de la définir que dans un seul endroit.
${CLAUDE_PLUGIN_ROOT} : Contient le chemin absolu de votre répertoire de plugin. Utilisez ceci dans les hooks, les serveurs MCP et les scripts pour assurer les chemins corrects indépendamment de l’emplacement d’installation.
Mise en cache des plugins et résolution des fichiers
Les plugins sont spécifiés de deux façons :
Via claude --plugin-dir, pour la durée d’une session.
Via une marketplace, installés pour les sessions futures.
À des fins de sécurité et de vérification, Claude Code copie les plugins de marketplace dans le cache de plugins local de l’utilisateur (~/.claude/plugins/cache) plutôt que de les utiliser sur place. Comprendre ce comportement est important lors du développement de plugins qui référencent des fichiers externes.
Les plugins installés ne peuvent pas référencer des fichiers en dehors de leur répertoire. Les chemins qui traversent en dehors de la racine du plugin (comme ../shared-utils) ne fonctionneront pas après l’installation car ces fichiers externes ne sont pas copiés dans le cache.
Si votre plugin doit accéder à des fichiers en dehors de son répertoire, vous pouvez créer des liens symboliques vers des fichiers externes dans votre répertoire de plugin. Les liens symboliques sont honorés lors du processus de copie :
Signaler un code incorrect
Copier
Demander à l'IA
# À l'intérieur de votre répertoire de pluginln -s /path/to/shared-utils ./shared-utils
Le contenu lié symboliquement sera copié dans le cache de plugins. Cela offre de la flexibilité tout en maintenant les avantages de sécurité du système de mise en cache.
enterprise-plugin/├── .claude-plugin/ # Répertoire de métadonnées (optionnel)│ └── plugin.json # manifeste du plugin├── commands/ # Emplacement de commande par défaut│ ├── status.md│ └── logs.md├── agents/ # Emplacement d'agent par défaut│ ├── security-reviewer.md│ ├── performance-tester.md│ └── compliance-checker.md├── skills/ # Skills d'agent│ ├── code-reviewer/│ │ └── SKILL.md│ └── pdf-processor/│ ├── SKILL.md│ └── scripts/├── hooks/ # Configurations des hooks│ ├── hooks.json # Configuration principale des hooks│ └── security-hooks.json # Hooks supplémentaires├── settings.json # Paramètres par défaut pour le plugin├── .mcp.json # Définitions du serveur MCP├── .lsp.json # Configurations du serveur LSP├── scripts/ # Scripts de hooks et d'utilitaires│ ├── security-scan.sh│ ├── format-code.py│ └── deploy.js├── LICENSE # Fichier de licence└── CHANGELOG.md # Historique des versions
Le répertoire .claude-plugin/ contient le fichier plugin.json. Tous les autres répertoires (commands/, agents/, skills/, hooks/) doivent être à la racine du plugin, pas à l’intérieur de .claude-plugin/.
Installez un plugin à partir des marketplaces disponibles.
Signaler un code incorrect
Copier
Demander à l'IA
claude plugin install <plugin> [options]
Arguments :
<plugin> : Nom du plugin ou plugin-name@marketplace-name pour une marketplace spécifique
Options :
Option
Description
Par défaut
-s, --scope <scope>
Portée d’installation : user, project, ou local
user
-h, --help
Afficher l’aide pour la commande
La portée détermine quel fichier de paramètres le plugin installé est ajouté. Par exemple, —scope project écrit dans enabledPlugins dans .claude/settings.json, rendant le plugin disponible à tous ceux qui clonent le référentiel du projet.Exemples :
Signaler un code incorrect
Copier
Demander à l'IA
# Installer dans la portée utilisateur (par défaut)claude plugin install formatter@my-marketplace# Installer dans la portée du projet (partagé avec l'équipe)claude plugin install formatter@my-marketplace --scope project# Installer dans la portée locale (ignorée par git)claude plugin install formatter@my-marketplace --scope local
Invalid JSON syntax: Unexpected token } in JSON at position 142 : vérifiez les virgules manquantes, les virgules supplémentaires ou les chaînes non citées
Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required : un champ obligatoire est manquant
Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ... : erreur de syntaxe JSON
Erreurs de chargement du plugin :
Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories. : le chemin de commande existe mais ne contient aucun fichier de commande valide
Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path. : le chemin source dans marketplace.json pointe vers un répertoire inexistant
Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components. : supprimez les définitions de composants en double ou supprimez strict: false dans l’entrée de la marketplace
Symptômes : Le plugin se charge mais les composants (commandes, agents, hooks) sont manquants.Structure correcte : Les composants doivent être à la racine du plugin, pas à l’intérieur de .claude-plugin/. Seul plugin.json appartient à .claude-plugin/.
Signaler un code incorrect
Copier
Demander à l'IA
my-plugin/├── .claude-plugin/│ └── plugin.json ← Seul le manifeste ici├── commands/ ← Au niveau racine├── agents/ ← Au niveau racine└── hooks/ ← Au niveau racine
Si vos composants sont à l’intérieur de .claude-plugin/, déplacez-les à la racine du plugin.Liste de contrôle de débogage :
Exécutez claude --debug et recherchez les messages « loading plugin »
Vérifiez que chaque répertoire de composants est listé dans la sortie de débogage
Vérifiez que les permissions de fichier permettent de lire les fichiers du plugin
Suivez le versioning sémantique pour les versions de plugin :
Signaler un code incorrect
Copier
Demander à l'IA
{ "name": "my-plugin", "version": "2.1.0"}
Format de version : MAJOR.MINOR.PATCH
MAJOR : Changements cassants (changements d’API incompatibles)
MINOR : Nouvelles fonctionnalités (ajouts rétro-compatibles)
PATCH : Corrections de bugs (corrections rétro-compatibles)
Meilleures pratiques :
Commencez à 1.0.0 pour votre première version stable
Mettez à jour la version dans plugin.json avant de distribuer les modifications
Documentez les modifications dans un fichier CHANGELOG.md
Utilisez des versions de pré-version comme 2.0.0-beta.1 pour les tests
Claude Code utilise la version pour déterminer s’il faut mettre à jour votre plugin. Si vous modifiez le code de votre plugin mais ne mettez pas à jour la version dans plugin.json, les utilisateurs existants de votre plugin ne verront pas vos modifications en raison de la mise en cache.Si votre plugin se trouve dans un répertoire de marketplace, vous pouvez gérer la version via marketplace.json à la place et omettre le champ version de plugin.json.