Plugin Directories
Un Plugin Directory est un mécanisme qui regroupe dans un seul dossier les skills, hooks, serveurs MCP, agents personnalisés, configurations LSP, etc. Il est utile quand vous voulez livrer un ensemble de capacités réutilisables avec votre application ou votre dépôt. Dans la version Laravel, vous les spécifiez viapluginDirectories dans SessionConfig ou ResumeSessionConfig.
Cas d’usage
- Distribuer plusieurs extensions comme un unique pack de capacités
- Embarquer des plugins dans un dépôt pour que tous utilisent la même configuration
- Développer et tester en local un plugin avant publication au Marketplace
- Surcharger temporairement un plugin installé avec un checkout local
mcpServers, hooks ou customAgents. Un Plugin Directory convient plutôt à la distribution groupée de plusieurs capacités liées.
Structure de dossiers
Le Copilot CLI cherche dans chaque plugin directory un fichierplugin.json ou un SKILL.md à la racine.
plugin.json peut aussi être placé dans .github/plugin.json ou .github/plugin/plugin.json. Comme skills, hooks, MCP, agents disposent chacun d’un loader indépendant, vous n’incluez que ce dont vous avez besoin.
Charger depuis Laravel
Différence avec cli_args
Le SDK officiel documente parfois cela comme l’argument --plugin-dir passé au démarrage du runtime. Dans la version Laravel, on utilise en priorité pluginDirectories du SessionConfig.
Si vous voulez passer des arguments au démarrage même du processus CLI, utilisez cli_args dans config/copilot.php ou cli_args dans Copilot::useStdio(). Attention, cli_args n’a d’effet que lorsque le SDK démarre le CLI en stdio ; il est ignoré lors d’une connexion à un runtime externe via useTcp() par exemple.
pluginDirectories. Il est explicite par session et se gère au même endroit que le reste de SessionConfig.
Bonnes pratiques pour la reproductibilité
- Utilisez des chemins absolus (par ex. via
base_path()) plutôt que relatifs - Versionnez les plugins embarqués dans le dépôt
- Documentez les versions utilisées pour les plugins issus du Marketplace ou d’une distribution externe
- En production, ne laissez pas un utilisateur choisir arbitrairement un chemin de plugin
Voir aussi
Pour les dernières informations, consultez le dépôt GitHub.