Zum Hauptinhalt springen

Plugin Directories

Ein Plugin Directory ist ein Mechanismus, um Skills, Hooks, MCP-Server, benutzerdefinierte Agenten, LSP-Konfigurationen usw. zusammen aus einem einzigen Verzeichnis zu laden. Sinnvoll, wenn Sie ein wiederverwendbares Bündel von Funktionen mit Ihrer App oder Ihrem Repository ausliefern wollen. In der Laravel-Version geben Sie diese in pluginDirectories von SessionConfig oder ResumeSessionConfig an.

Anwendungsfälle

  • Mehrere Erweiterungen als ein Fähigkeitspaket verteilen
  • Plugins ins Repository einbetten, damit alle dieselbe Konfiguration nutzen
  • Plugins vor der Marketplace-Veröffentlichung lokal entwickeln und testen
  • Installierte Plugins temporär mit einem lokalen Checkout überschreiben
Wenn Sie nur einen MCP-Server, einen Hook oder einen benutzerdefinierten Agenten nutzen, ist die direkte Angabe in mcpServers, hooks oder customAgents einfacher. Plugin Directories eignen sich, wenn Sie mehrere zusammenhängende Funktionen gemeinsam ausliefern möchten.

Verzeichnisstruktur

Die Copilot CLI sucht in jedem Plugin-Verzeichnis nach plugin.json oder einem SKILL.md direkt im Wurzelverzeichnis.
my-plugin/
├── plugin.json
├── SKILL.md
├── hooks.json
├── .mcp.json
├── agents/
│   └── code-reviewer.md
└── skills/
    └── lint-fix/
        └── SKILL.md
plugin.json kann auch unter .github/plugin.json oder .github/plugin/plugin.json liegen. Skills, Hooks, MCP und Agenten haben eigene Loader; nehmen Sie also nur das auf, was Sie benötigen.

Aus Laravel laden

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'),
    ],
));
Die Angabe im Array-Format ist ebenfalls möglich.
Copilot::run(
    prompt: 'READMEを改善して',
    config: [
        'pluginDirectories' => [
            base_path('plugins/docs-writer'),
        ],
    ],
);

Unterschied zu cli_args

Im offiziellen SDK wird dies teilweise als --plugin-dir-Argument beim Runtime-Start beschrieben. In der Laravel-Version verwenden Sie standardmäßig pluginDirectories in der Session-Konfiguration. Möchten Sie hingegen dem Start des CLI-Prozesses selbst Argumente übergeben, können Sie cli_args in config/copilot.php oder cli_args von Copilot::useStdio() nutzen. Beachten Sie jedoch, dass cli_args nur wirkt, wenn das SDK die CLI im stdio-Modus startet, und bei Verbindung mit einer externen Runtime (z. B. useTcp()) ignoriert wird.
$stdioConfig = config('copilot');
$stdioConfig['cli_args'] = [
    '--plugin-dir',
    base_path('plugins/code-reviewer'),
];

Copilot::useStdio($stdioConfig)->start(fn (CopilotSession $session) => ...);
In der Regel bevorzugen Sie pluginDirectories: Es ist pro Session explizit und wird an derselben Stelle wie die übrigen SessionConfig-Einstellungen verwaltet.

Betrieb für Reproduzierbarkeit

  • Verwenden Sie absolute Pfade (z. B. via base_path()) statt relativer Pfade
  • Versionieren Sie im Repository ausgelieferte Plugins
  • Wenn Sie Marketplace- oder externe Plugins nutzen, dokumentieren Sie die eingesetzte Version
  • In Produktivumgebungen keine beliebigen Plugin-Pfade durch Nutzereingaben zulassen

Referenzen

Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026