Plugin
Un plugin est un dépôt Git capable de partager d’un coup un ensemble de composants.
Les plugins sont généralement regroupés au sein de marketplaces pour être installés par les agent runtimes, mais ils peuvent aussi être installés directement via l’Agent Package Manager ou certains agent runtimes (comme goose).
Structure
Un plugin est généralement identifié par un fichier plugin.json (peut varier selon l’agent runtime).
Son emplacement et son contenu (avec de légères variations) dépendent du (ou des) agent runtime(s) cible(s).
- Format : Agent Plugins
- Lu par : Copilot, Cursor, Devin, Hermes
- Variables d’environnement :
PLUGIN_ROOT(répertoire du plugin)PLUGIN_DATA(répertoire de données du plugin)
repository/
├── plugin.json
├── skills/
│ └── skill-name/
│ └── SKILL.md
├── mcp.json
└── com.example.client/Le répertoire com.example.client est une extension client.
Il contient des composants dans un format spécifique à l’agent runtime (hooks, serveurs MCP, skills, etc.).
- Copilot :
com.github.copilot/
Limitations
Format LSP
Bien que les LSP puissent être définis dans .lsp.json, une meilleure approche consiste à les définir en ligne dans plugin.json
car leur format varie selon les agent runtimes.
Variables d’environnement des hooks
Dans la plupart des cas, les hooks appellent des scripts personnalisés (shell, powershell, bash, js, etc.)
et utilisent des variables d’environnement prédéfinies pour les localiser (par exemple PLUGIN_ROOT, CLAUDE_PLUGIN_ROOT, CLAUDE_PLUGIN_DATA, etc.).
Cependant, avec certains agent runtimes (par exemple VSCode Chat), ces variables ne sont pas correctement définies sur les environnements distants (par exemple WSL ou SSH) lorsque l’OS hôte diffère de celui du distant.
Voir microsoft/vscode#313201 et microsoft/vscode#326166 pour plus de détails.