Passer au contenu principal

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 via pluginDirectories 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
Pour un seul serveur MCP, un seul hook, ou un seul agent personnalisé, il est plus simple d’utiliser directement 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 fichier plugin.json ou un SKILL.md à la racine.
my-plugin/
├── plugin.json
├── SKILL.md
├── hooks.json
├── .mcp.json
├── agents/
│   └── code-reviewer.md
└── skills/
    └── lint-fix/
        └── SKILL.md
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

use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

Copilot::start(function (CopilotSession $session): void {
    $response = $session->sendAndWait(
        prompt: 'この変更をプラグインのレビュー方針で確認して',
    );

    dump($response->content());
}, config: new SessionConfig(
    pluginDirectories: [
        base_path('plugins/code-reviewer'),
        base_path('plugins/lint-fix'),
    ],
));
Vous pouvez aussi passer un tableau.
Copilot::run(
    prompt: 'READMEを改善して',
    config: [
        'pluginDirectories' => [
            base_path('plugins/docs-writer'),
        ],
    ],
);

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.
$stdioConfig = config('copilot');
$stdioConfig['cli_args'] = [
    '--plugin-dir',
    base_path('plugins/code-reviewer'),
];

Copilot::useStdio($stdioConfig)->start(fn (CopilotSession $session) => ...);
Privilégiez 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.
Dernière modification le 13 juillet 2026