Zum Hauptinhalt springen

Warum ein eigener Agent

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.

Boosts Erweiterungsarchitektur

Basisklasse Agent

Jeder Agent erbt von Laravel\Boost\Install\Agents\Agent. Diese abstrakte Klasse liefert:
  • Erkennung des Agenten (systemweit und projektspezifisch)
  • Installation von MCP-Servern (dateibasiert und per Shell-Kommando)
  • Hook zur Transformation von Guidelines (transformGuidelines)
Pflichtmethoden gibt es zwei:
MethodeBeschreibung
name()Interner Bezeichner (z. B. claude_code)
displayName()Anzeigename in der Installation (z. B. Claude Code)
systemDetectionConfig(Platform $platform)Konfiguration der systemweiten Erkennung
projectDetectionConfig()Konfiguration der projektbezogenen Erkennung

Drei Contracts

Um Boost-Features selektiv zu aktivieren, implementieren Sie die passenden Contracts.
ContractAufgabe
SupportsGuidelinesZielpfad und Nachbearbeitung von KI-Guidelines
SupportsMcpInstallation der MCP-Server-Konfiguration
SupportsSkillsInstallationspfad für Agent Skills
Alle drei Contracts sind optional. Sie können z. B. nur Guidelines, aber keine MCP-Unterstützung anbieten.

SupportsGuidelines-Contract

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.

SupportsMcp-Contract

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:
McpInstallationStrategyVerhalten
FILESchreibt die Einstellungen in eine JSON-/TOML-Datei (Standard)
SHELLRegistriert MCP per Shell-Kommando
NONEÜberspringt die MCP-Installation

SupportsSkills-Contract

interface SupportsSkills
{
    // Zielverzeichnis für Agent Skills
    public function skillsPath(): string;
}
Gibt das Verzeichnis zurück, in das der Agent seine Skills schreibt — z. B. .claude/skills bei Claude Code oder .cursor/skills bei Cursor.

Einen eigenen Agenten erstellen

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.
<?php

declare(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.
<?php

namespace 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.

Guidelines anpassen

guidelinesPath konfigurieren

Verschiedene Agenten lesen Guidelines an unterschiedlichen Orten.
// Ausgabe als einzelne Datei
public function guidelinesPath(): string
{
    return 'MYAGENT.md';
}
Über Config konfigurierbar zu machen erhöht die Flexibilität:
public function guidelinesPath(): string
{
    return config('boost.agents.my_agent.guidelines_path', 'MYAGENT.md');
}

Agenten, die Frontmatter erwarten

Formate wie .cursor/rules/*.mdc von Cursor verlangen Frontmatter — frontmatter() gibt true zurück.
public function frontmatter(): bool
{
    return true;
}

Guidelines nachbearbeiten

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;
}

Eigene KI-Guidelines hinzufügen

Um projektspezifische Regeln in die Boost-Guidelines aufzunehmen, legen Sie Blade-Dateien im Verzeichnis .ai/guidelines/ ab.
.ai/
└── guidelines/
    ├── my-domain-rules.blade.php
    └── coding-standards.blade.php
Beispiel-Datei:
## Projekt-spezifische Regeln

In 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.

Eingebaute Guidelines überschreiben

Legen Sie eine eigene Datei am selben Pfad wie eine eingebaute Guideline ab, hat Ihre Vorrang.
# "Inertia React v2 Form Guidance" überschreiben
.ai/guidelines/inertia-react/2/forms.blade.php

Eigene Skills hinzufügen

SKILL.md erstellen

Legen Sie einen Skill unter .ai/skills/{Skill-Name}/SKILL.md ab.
.ai/
└── skills/
    └── creating-invoices/
        └── SKILL.md
SKILL.md besteht aus YAML-Frontmatter und Markdown-Anleitung.
---
name: creating-invoices
description: Skill für die Implementierung von Erstellung, Aktualisierung und Versand von Rechnungen.
---

# Skill „Rechnungserstellung"

## Wann diesen Skill verwenden

Beim 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),
]);

PDF-Erzeugung der Rechnung

PDFs werden mit barryvdh/laravel-dompdf erzeugt:
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.

Eingebaute Skills überschreiben

Legen Sie einen eigenen Skill mit demselben Namen an — er überschreibt den eingebauten.
# Skill livewire-development anpassen
.ai/skills/livewire-development/SKILL.md

Boost-Unterstützung für Drittanbieter-Pakete ergänzen

Damit Ihr eigenes Paket Boost unterstützt, legen Sie Konfigurationsdateien im Verzeichnis resources/boost/ ab.

Guidelines hinzufügen

resources/
└── boost/
    └── guidelines/
        └── core.blade.php
## MyPackage

Dieses Paket stellt [Feature-Übersicht] bereit.

### Grundlegende Verwendung

@verbatim
<code-snippet name="Initialisierung von MyPackage" lang="php">
$result = MyPackage::create([
    'option' => 'value',
]);
</code-snippet>
@endverbatim

Skills hinzufügen

resources/
└── boost/
    └── skills/
        └── mypackage-development/
            └── SKILL.md
---
name: mypackage-development
description: Skill zur Implementierung von Funktionen mit MyPackage.
---

# MyPackage Development

## Wann diesen Skill verwenden
Bei 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.

Praxisbeispiel: eigener Agent für interne CI/CD

Vollständige Implementierung eines fiktiven Agenten „PipelineAgent”, der nur Guidelines unterstützt (kein MCP, keine Skills).
<?php

declare(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:
php artisan boost:install --agent=pipeline_agent

ClaudeCode.php — offizielles Referenzbeispiel

Vollständige Implementierung des mitgelieferten Claude-Code-Agenten im Quellcode.

Agent Skills

Formatspezifikation und Best Practices für SKILL.md.

Laravel Boost Custom Agent for GitHub Copilot CLI

Beispielpaket, das Copilot CLI und Testbench unterstützt.

Laravel Boost Custom Agent for PhpStorm with GitHub Copilot

Beispielpaket für das GitHub-Copilot-Plugin in PhpStorm.
Zuletzt geändert am 13. Juli 2026