Ein tiefer Blick in die Erweiterungsarchitektur von Laravel Boost und eine Anleitung zur Implementierung eines eigenen Agenten mit den Contracts SupportsGuidelines, SupportsMcp und SupportsSkills.
Laravel Boost unterstützt gängige KI-Coding-Werkzeuge wie Claude Code, Cursor, Codex und GitHub Copilot (VS Code) von Haus aus. Für interne Werkzeuge, aufstrebende KI-Agenten oder eigene Workflows müssen Sie mit Boosts Erweiterungsmöglichkeiten einen eigenen Agenten implementieren.Wann ein eigener Agent nützlich ist:
Sie nutzen eine IDE oder ein KI-Werkzeug, das Boost nicht unterstützt.
Sie möchten Boost in einen internen Entwicklungs-Workflow oder eine eigene CI/CD-Pipeline integrieren.
Es gibt agentenspezifische Konfigurationsformate oder Installationsprozeduren.
interface SupportsGuidelines{ // Zielpfad für die KI-Guidelines-Datei public function guidelinesPath(): string; // Benötigt die Datei Frontmatter? public function frontmatter(): bool; // Nachbearbeitung des Guidelines-Markdown public function transformGuidelines(string $markdown): string;}
guidelinesPath() liefert den Pfad, in den die generierten Guidelines geschrieben werden. Beispielsweise CLAUDE.md für Claude Code oder .cursor/rules/laravel-boost.mdc für Cursor.transformGuidelines() ist ein Hook, der das erzeugte Markdown weiter verarbeitet — etwa um einen agent-spezifischen Header zu setzen. Die Basisklasse Agent gibt in der Standardimplementierung die Zeichenkette unverändert zurück.
interface SupportsMcp{ // Absolute Pfade in MCP-Kommandos verwenden? public function useAbsolutePathForMcp(): bool; // Pfad zur PHP-Executable public function getPhpPath(bool $forceAbsolutePath = false): string; // Pfad zu artisan public function getArtisanPath(bool $forceAbsolutePath = false): string; // MCP-Serverkonfiguration installieren public function installMcp(string $key, string $command, array $args = [], array $env = []): bool; // HTTP-basierte MCP-Serverkonfiguration installieren public function installHttpMcp(string $key, string $url): bool;}
Da Agent Standardimplementierungen von installMcp() und installHttpMcp() mitbringt, genügt in vielen Fällen das Überschreiben von mcpInstallationStrategy() und mcpConfigPath().Es gibt zwei Installationsstrategien:
McpInstallationStrategy
Verhalten
FILE
Schreibt die Einstellungen in eine JSON-/TOML-Datei (Standard)
Wir implementieren einen eigenen Agent. Als Beispiel dient ein fiktiver Agent „MyAgent”, der in einen eigenen CI/CD-Workflow eingebunden ist.
1
Agent-Klasse erstellen
Legen Sie app/Boost/MyAgent.php an.
<?phpdeclare(strict_types=1);namespace App\Boost;use Laravel\Boost\Contracts\SupportsGuidelines;use Laravel\Boost\Contracts\SupportsMcp;use Laravel\Boost\Contracts\SupportsSkills;use Laravel\Boost\Install\Agents\Agent;use Laravel\Boost\Install\Enums\McpInstallationStrategy;use Laravel\Boost\Install\Enums\Platform;class MyAgent extends Agent implements SupportsGuidelines, SupportsMcp, SupportsSkills{ public function name(): string { return 'my_agent'; } public function displayName(): string { return 'MyAgent'; } public function systemDetectionConfig(Platform $platform): array { return match ($platform) { Platform::Darwin, Platform::Linux => [ 'command' => 'command -v myagent', ], Platform::Windows => [ 'command' => 'cmd /c where myagent 2>nul', ], }; } public function projectDetectionConfig(): array { return [ 'files' => ['.myagent.json'], ]; } // --- SupportsGuidelines --- public function guidelinesPath(): string { return 'MYAGENT.md'; } // frontmatter() nutzt den Default (false) der Basisklasse // transformGuidelines() nutzt ebenfalls den Default (unverändert zurückgeben) // --- SupportsMcp --- // useAbsolutePathForMcp(), getPhpPath(), getArtisanPath(), // installMcp() und installHttpMcp() sind in der Basisklasse Agent implementiert public function mcpInstallationStrategy(): McpInstallationStrategy { return McpInstallationStrategy::FILE; } public function mcpConfigPath(): string { return '.myagent.json'; } // --- SupportsSkills --- public function skillsPath(): string { return '.myagent/skills'; }}
systemDetectionConfig() und projectDetectionConfig() verwendet Boost, um den Agenten automatisch zu erkennen — sowohl systemweit als auch im Projekt. Bei boost:install wird der Agent dann automatisch als Kandidat angezeigt.
2
Agenten registrieren
Registrieren Sie den Agenten in der boot-Methode des App\Providers\AppServiceProvider.
<?phpnamespace App\Providers;use App\Boost\MyAgent;use Illuminate\Support\ServiceProvider;use Laravel\Boost\Boost;class AppServiceProvider extends ServiceProvider{ public function boot(): void { Boost::registerAgent('my_agent', MyAgent::class); }}
Nach der Registrierung erscheint MyAgent bei php artisan boost:install in der Auswahl.
3
Ergebnis prüfen
php artisan boost:install
Auf der Auswahlseite erscheint MyAgent. Nach der Auswahl werden MYAGENT.md, .myagent.json und .myagent/skills/ erzeugt.
Mit transformGuidelines() bearbeiten Sie das erzeugte Markdown weiter.
public function transformGuidelines(string $markdown): string{ // Eigenen Header hinzufügen $header = "<!-- Generated by Laravel Boost for MyAgent -->\n\n"; return $header . $markdown;}
## Projekt-spezifische RegelnIn diesem Projekt gelten folgende Konventionen:- Modelle liegen im Namensraum `App\Models\`- Alle API-Endpoints befinden sich unter `App\Http\Controllers\Api\`- Datenbank-Transaktionen kapseln wir mit `DB::transaction()` innerhalb von Service-Klassen@verbatim<code-snippet name="Transaktion in einer Service-Klasse" lang="php">DB::transaction(function () use ($data) { $order = Order::create($data); $order->items()->createMany($data['items']); event(new OrderCreated($order));});</code-snippet>@endverbatim
Beim Ausführen von boost:install werden diese Guidelines automatisch mit den mitgelieferten kombiniert und ausgegeben.
SKILL.md besteht aus YAML-Frontmatter und Markdown-Anleitung.
---name: creating-invoicesdescription: Skill für die Implementierung von Erstellung, Aktualisierung und Versand von Rechnungen.---# Skill „Rechnungserstellung"## Wann diesen Skill verwendenBeim Erstellen des Rechnungsmodells, der PDF-Erzeugung sowie beim Mailversand.## Dateistruktur- `app/Models/Invoice.php` — Rechnungsmodell- `app/Services/InvoiceService.php` — Geschäftslogik- `app/Jobs/SendInvoiceEmail.php` — Job zum Mailversand## Implementierungsmuster### Rechnung anlegen```php// $items ist ein Array, das aus Controller oder anderen Services übergeben wird$invoice = InvoiceService::create([ 'user_id' => $user->id, 'items' => $items, 'due_date' => now()->addDays(30),]);
use Barryvdh\DomPDF\Facade\Pdf;use Illuminate\Support\Facades\Storage;$pdf = Pdf::loadView('invoices.pdf', ['invoice' => $invoice]);Storage::put("invoices/{$invoice->id}.pdf", $pdf->output());
Skills sind so entworfen, dass sie „nur bei Bedarf geladen werden”. Wenn Sie stets benötigte Informationen in Guidelines und aufgabenspezifische Details in Skills packen, optimieren Sie den Kontextverbrauch der KI.
---name: mypackage-developmentdescription: Skill zur Implementierung von Funktionen mit MyPackage.---# MyPackage Development## Wann diesen Skill verwendenBei der Implementierung von Features, die MyPackage nutzen.## Wichtige Funktionen- Feature 1: …- Feature 2: …
Führt der Nutzer Ihres Pakets php artisan boost:install aus, werden diese Guidelines und Skills automatisch erkannt und angeboten.
Vollständige Implementierung eines fiktiven Agenten „PipelineAgent”, der nur Guidelines unterstützt (kein MCP, keine Skills).
<?phpdeclare(strict_types=1);namespace App\Boost;use Laravel\Boost\Contracts\SupportsGuidelines;use Laravel\Boost\Install\Agents\Agent;use Laravel\Boost\Install\Enums\Platform;class PipelineAgent extends Agent implements SupportsGuidelines{ public function name(): string { return 'pipeline_agent'; } public function displayName(): string { return 'Pipeline Agent (CI/CD)'; } public function systemDetectionConfig(Platform $platform): array { // Erkennung über Umgebungsvariable return [ 'command' => match ($platform) { Platform::Windows => 'cmd /c echo %CI_AGENT_VERSION% 2>nul', default => 'echo $CI_AGENT_VERSION', }, ]; } public function projectDetectionConfig(): array { // Erkennung anhand einer Konfigurationsdatei im Projekt-Root return [ 'files' => ['.pipeline-agent.yml'], ]; } public function guidelinesPath(): string { // Pfad, an dem der CI/CD-Agent seine Konventionen liest return '.pipeline/CODING_GUIDELINES.md'; } public function frontmatter(): bool { return false; } public function transformGuidelines(string $markdown): string { // Metadaten-Header für die Pipeline anfügen $timestamp = now()->toIso8601String(); return "<!-- Generated by Laravel Boost at {$timestamp} -->\n\n{$markdown}"; }}
Registrieren Sie den Agenten im AppServiceProvider:
use App\Boost\PipelineAgent;use Laravel\Boost\Boost;public function boot(): void{ Boost::registerAgent('pipeline_agent', PipelineAgent::class);}
In der CI-Umgebung erzeugen Sie damit ausschließlich Guidelines: