メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://kawax.biz/llms.txt

Use this file to discover all available pages before exploring further.

なぜカスタムエージェントが必要か

Laravel Boostは Claude Code、Cursor、Codex、GitHub Copilot(VS Code) など主要なAIコーディングツールを標準でサポートしています。しかし社内ツール、新興のAIエージェント、独自ワークフローへ対応するには、Boostの拡張機能を使ってカスタムエージェントを実装する必要があります。 カスタムエージェントが役立つ場面:
  • Boostが未対応のIDEやAIツールを使っている
  • 社内開発ワークフローや独自CI/CDパイプラインにBoostを統合したい
  • エージェント固有の設定ファイル形式やインストール手順がある

Boostの拡張アーキテクチャ

Agent基底クラス

すべてのエージェントは Laravel\Boost\Install\Agents\Agent を継承します。この抽象クラスが提供する機能:
  • エージェントの検出(システム全体・プロジェクト単位)
  • MCPサーバーのインストール(ファイルベース・シェルコマンドベース)
  • ガイドライン変換フック(transformGuidelines
実装が必須の抽象メソッドは2つです。
メソッド説明
name()エージェントの内部識別子(例: claude_code
displayName()インストール時に表示される名前(例: Claude Code
systemDetectionConfig(Platform $platform)システム全体へのインストール検出設定
projectDetectionConfig()プロジェクト単位のインストール検出設定

3つのコントラクト

Boostの機能を選択的に有効化するために、以下のコントラクトを必要な分だけ実装します。
コントラクト役割
SupportsGuidelinesAIガイドラインファイルの書き出しパスと変換処理
SupportsMcpMCPサーバー設定のインストール
SupportsSkillsAgent Skillsのインストールパス
3つのコントラクトはすべて任意です。ガイドラインだけサポートしてMCPは不要、という実装も可能です。

SupportsGuidelinesコントラクト

interface SupportsGuidelines
{
    // AIガイドラインを書き出すファイルパス
    public function guidelinesPath(): string;

    // ガイドラインファイルにフロントマターが必要か
    public function frontmatter(): bool;

    // 生成されたガイドラインのMarkdownを後処理する
    public function transformGuidelines(string $markdown): string;
}
guidelinesPath() は生成したガイドラインを書き込むファイルパスを返します。Claude Codeなら CLAUDE.md、Cursorなら .cursor/rules/laravel-boost.mdc のように、エージェントが読み込む形式に合わせます。 transformGuidelines() は生成後のMarkdownを加工するフックです。エージェント固有のヘッダーを追加したり、特殊なフォーマットに変換したりできます。Agent 基底クラスに実装済みのデフォルトはそのまま文字列を返します。

SupportsMcpコントラクト

interface SupportsMcp
{
    // MCPコマンドに絶対パスを使うか
    public function useAbsolutePathForMcp(): bool;

    // PHP実行ファイルのパスを返す
    public function getPhpPath(bool $forceAbsolutePath = false): string;

    // artisanのパスを返す
    public function getArtisanPath(bool $forceAbsolutePath = false): string;

    // MCPサーバー設定をインストールする
    public function installMcp(string $key, string $command, array $args = [], array $env = []): bool;

    // HTTP経由のMCPサーバー設定をインストールする
    public function installHttpMcp(string $key, string $url): bool;
}
Agent 基底クラスが installMcp()installHttpMcp() のデフォルト実装を持っているため、多くの場合は mcpInstallationStrategy()mcpConfigPath() をオーバーライドするだけで済みます。 インストール戦略は2種類あります。
McpInstallationStrategy動作
FILEJSON/TOMLファイルに設定を書き込む(デフォルト)
SHELLシェルコマンドを実行してMCPを登録する
NONEMCPインストールをスキップする

SupportsSkillsコントラクト

interface SupportsSkills
{
    // Agent Skillsを書き出すディレクトリパス
    public function skillsPath(): string;
}
エージェントが読み込むスキルディレクトリのパスを返します。Claude Codeなら .claude/skills、Cursorなら .cursor/skills のようにエージェントの仕様に合わせます。

カスタムエージェントの作成

実際に独自エージェントクラスを実装します。ここでは独自のCI/CDワークフローに組み込まれた仮想エージェント「MyAgent」を例にします。
1

エージェントクラスを作成する

app/Boost/MyAgent.php を作成します。
<?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() は Agent 基底クラスのデフォルト (false) を使用
    // transformGuidelines() も基底クラスのデフォルト(そのまま返す)を使用

    // --- SupportsMcp ---

    // useAbsolutePathForMcp(), getPhpPath(), getArtisanPath(),
    // installMcp(), installHttpMcp() はすべて Agent 基底クラスが実装済み

    public function mcpInstallationStrategy(): McpInstallationStrategy
    {
        return McpInstallationStrategy::FILE;
    }

    public function mcpConfigPath(): string
    {
        return '.myagent.json';
    }

    // --- SupportsSkills ---

    public function skillsPath(): string
    {
        return '.myagent/skills';
    }
}
systemDetectionConfig()projectDetectionConfig() はBoostがエージェントをシステム・プロジェクトで自動検出するために使います。boost:install 実行時に対象エージェントを自動的に候補として表示します。
2

エージェントを登録する

App\Providers\AppServiceProviderboot メソッドにカスタムエージェントを登録します。
<?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);
    }
}
登録後、php artisan boost:install を実行するとMyAgentが選択肢に表示されます。
3

動作を確認する

php artisan boost:install
インストール対象のエージェントを選択する画面でMyAgentが表示されます。選択すると MYAGENT.md.myagent.json.myagent/skills/ が生成されます。

ガイドラインのカスタマイズ

guidelinesPathの設定

エージェントによってガイドラインファイルの読み込み場所は異なります。
// 単一ファイルとして出力する場合
public function guidelinesPath(): string
{
    return 'MYAGENT.md';
}
設定ファイルから上書きできるようにすると柔軟性が高まります。
public function guidelinesPath(): string
{
    return config('boost.agents.my_agent.guidelines_path', 'MYAGENT.md');
}

フロントマターが必要なエージェント

Cursorの .cursor/rules/*.mdc のようにフロントマターが必要なフォーマットには frontmatter()true を返します。
public function frontmatter(): bool
{
    return true;
}

ガイドラインの後処理

transformGuidelines() を使って生成後のMarkdownを加工できます。
public function transformGuidelines(string $markdown): string
{
    // エージェント独自のヘッダーを追加する
    $header = "<!-- Generated by Laravel Boost for MyAgent -->\n\n";

    return $header . $markdown;
}

カスタムAIガイドラインの追加

プロジェクト固有のルールをBoostのガイドラインに追加するには、.ai/guidelines/ ディレクトリに Blade ファイルを配置します。
.ai/
└── guidelines/
    ├── my-domain-rules.blade.php
    └── coding-standards.blade.php
ファイル例:
## プロジェクト固有のルール

このプロジェクトでは以下の規約に従うこと:

- モデルは必ず `App\Models\` 名前空間に配置する
- すべてのAPIエンドポイントは `App\Http\Controllers\Api\` 以下に作成する
- DBトランザクションは `DB::transaction()` を使いサービスクラス内に閉じ込める

@verbatim
<code-snippet name="サービスクラスのトランザクション例" lang="php">
DB::transaction(function () use ($data) {
    $order = Order::create($data);
    $order->items()->createMany($data['items']);
    event(new OrderCreated($order));
});
</code-snippet>
@endverbatim
boost:install を実行すると、このガイドラインがBoost組み込みのガイドラインと自動的に結合されて出力されます。

組み込みガイドラインのオーバーライド

Boostの組み込みガイドラインと同じパスにカスタムファイルを置くと、そちらが優先されます。
# Boostの "Inertia React v2 Form Guidance" をオーバーライドする
.ai/guidelines/inertia-react/2/forms.blade.php

カスタムスキルの追加

SKILL.mdの作成

.ai/skills/{スキル名}/SKILL.md にスキルを定義します。
.ai/
└── skills/
    └── creating-invoices/
        └── SKILL.md
SKILL.md はYAMLフロントマターとMarkdownの指示で構成します。
---
name: creating-invoices
description: 請求書(Invoice)の作成・更新・送信に関する処理を実装する際に使うスキル。
---

# 請求書作成スキル

## このスキルを使う場面

請求書モデルの作成、請求書のPDF生成、メール送信を実装するときに使います。

## ファイル構造

- `app/Models/Invoice.php` — 請求書モデル
- `app/Services/InvoiceService.php` — ビジネスロジック
- `app/Jobs/SendInvoiceEmail.php` — メール送信ジョブ

## 実装パターン

### 請求書の作成

```php
// $items はコントローラーや他のサービスから渡された配列
$invoice = InvoiceService::create([
    'user_id' => $user->id,
    'items' => $items,
    'due_date' => now()->addDays(30),
]);

請求書のPDF生成

PDFは barryvdh/laravel-dompdf を使って生成する:
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());
スキルは「必要なときだけ読み込む」設計です。常に必要な情報はガイドラインに、タスク固有の詳細なパターンはスキルに分けることで、AIのコンテキスト使用量を最適化できます。

組み込みスキルのオーバーライド

Boostの組み込みスキルと同じ名前でカスタムスキルを作ると上書きされます。
# livewire-development スキルをカスタマイズする
.ai/skills/livewire-development/SKILL.md

サードパーティパッケージへのBoost対応追加

自作パッケージにBoostサポートを追加するには、パッケージの resources/boost/ ディレクトリに設定ファイルを配置します。

ガイドラインの追加

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

このパッケージは [機能の概要] を提供します。

### 基本的な使い方

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

スキルの追加

resources/
└── boost/
    └── skills/
        └── mypackage-development/
            └── SKILL.md
---
name: mypackage-development
description: MyPackageの機能を実装するスキル。
---

# MyPackage Development

## このスキルを使う場面
MyPackageを使った機能実装時に使います。

## 主な機能

- 機能1: ...
- 機能2: ...
パッケージユーザーが php artisan boost:install を実行すると、これらのガイドラインとスキルが自動的に検出されてインストール対象として表示されます。

実践例:独自CI/CDエージェント向けカスタムエージェント

社内のCI/CDパイプラインに組み込まれた仮想エージェント「PipelineAgent」の完全な実装例です。このエージェントはガイドラインのみサポートし、MCPとスキルはサポートしません。
<?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
    {
        // CI環境変数で存在を検出する
        return [
            'command' => match ($platform) {
                Platform::Windows => 'cmd /c echo %CI_AGENT_VERSION% 2>nul',
                default => 'echo $CI_AGENT_VERSION',
            },
        ];
    }

    public function projectDetectionConfig(): array
    {
        // プロジェクトルートの設定ファイルで検出する
        return [
            'files' => ['.pipeline-agent.yml'],
        ];
    }

    public function guidelinesPath(): string
    {
        // CI/CDエージェントが読み込む規約のパス
        return '.pipeline/CODING_GUIDELINES.md';
    }

    public function frontmatter(): bool
    {
        return false;
    }

    public function transformGuidelines(string $markdown): string
    {
        // パイプライン用のメタデータヘッダーを追加する
        $timestamp = now()->toIso8601String();

        return "<!-- Generated by Laravel Boost at {$timestamp} -->\n\n{$markdown}";
    }
}
AppServiceProvider に登録します:
use App\Boost\PipelineAgent;
use Laravel\Boost\Boost;

public function boot(): void
{
    Boost::registerAgent('pipeline_agent', PipelineAgent::class);
}
CI環境では以下のコマンドでガイドラインのみを生成できます:
php artisan boost:install --agent=pipeline_agent

参考リンク

ClaudeCode.php — 公式実装例

Boostに同梱されているClaudeCodeエージェントの完全な実装をソースコードで確認できます。

Agent Skills

SKILL.mdのフォーマット仕様とベストプラクティスを参照できます。

Laravel Boost Custom Agent for GitHub Copilot CLI

Copilot CLI と Testbench 両対応の公開パッケージ実装例

Laravel Boost Custom Agent for PhpStorm with GitHub Copilot

PhpStorm の GitHub Copilot プラグイン向け公開パッケージ実装例
Last modified on May 5, 2026