1. Go to this page and download the library: Download thumanics/laravel-boost library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
thumanics / laravel-boost example snippets
declare(strict_types=1);
namespace Laravel\Boost\Mcp\Tools;
use Illuminate\Contracts\JsonSchema\JsonSchema;
use Illuminate\JsonSchema\Types\Type;
use Laravel\Mcp\Request;
use Laravel\Mcp\Response;
use Laravel\Mcp\Server\Tool;
use Laravel\Mcp\Server\Tools\Annotations\IsReadOnly;
#[IsReadOnly] // Ajouter si l'outil ne modifie aucun etat
class MonOutil extends Tool
{
protected string $description = 'Description claire de ce que fait l\'outil';
/**
* @return array<string, Type>
*/
public function schema(JsonSchema $schema): array
{
return [
'param_requis' => $schema
->string()
->description('Description du parametre')
->
public function __construct(protected Roster $roster)
{
//
}
declare(strict_types=1);
use Laravel\Boost\Install\Agents\MonAgent;
use Laravel\Boost\Install\Detection\DetectionStrategyFactory;
test('MonAgent returns correct name', function (): void {
$factory = Mockery::mock(DetectionStrategyFactory::class);
$agent = new MonAgent($factory);
expect($agent->name())->toBe('mon_agent')
->and($agent->displayName())->toBe('Mon Agent');
});
test('MonAgent returns relative php path by default', function (): void {
config(['boost.executable_paths.php' => null]);
$factory = Mockery::mock(DetectionStrategyFactory::class);
$agent = new MonAgent($factory);
expect($agent->getPhpPath())->toBe('php');
});
declare(strict_types=1);
namespace Laravel\Boost\Mcp\Prompts\MonPrompt;
use Laravel\Boost\Concerns\RendersBladeGuidelines;
use Laravel\Mcp\Response;
use Laravel\Mcp\Server\Prompt;
class MonPrompt extends Prompt
{
use RendersBladeGuidelines;
protected string $name = 'mon-prompt';
protected string $title = 'mon_prompt';
protected string $description = 'Description de ce que fait ce prompt et quand l\'utiliser.';
public function handle(): Response
{
$content = $this->renderBladeFile(__DIR__.'/mon-prompt.blade.php');
return Response::text($content);
}
}
declare(strict_types=1);
use Laravel\Boost\Mcp\Prompts\MonPrompt\MonPrompt;
beforeEach(function (): void {
$this->prompt = new MonPrompt;
});
test('it has correct name', function (): void {
expect($this->prompt->name())->toBe('mon-prompt');
});
test('it has a description', function (): void {
expect($this->prompt->description())->not->toBeEmpty();
});
test('it returns valid response', function (): void {
$response = $this->prompt->handle();
expect($response)
->isToolResult()
->toolHasNoError()
->toolTextContains('Instructions pour Mon Prompt');
});
declare(strict_types=1);
namespace Laravel\Boost\Mcp\Resources;
use Laravel\Mcp\Response;
use Laravel\Mcp\Server\Resource;
class MonResource extends Resource
{
protected string $description = 'Description de la ressource et de son contenu.';
protected string $uri = 'file://instructions/mon-resource.md';
protected string $mimeType = 'text/markdown';
public function handle(): Response
{
// Option A : Contenu direct
return Response::json(['data' => 'valeur']);
// Option B : Via ToolExecutor (deleguer a un outil existant)
// $response = $this->toolExecutor->execute(MonOutil::class);
// return $response;
// Option C : Via template Blade (utiliser le trait RendersBladeGuidelines)
// $content = $this->renderBladeFile(__DIR__.'/mon-resource.blade.php');
// return Response::text($content);
}
}
declare(strict_types=1);
namespace Laravel\Boost\Console;
use Illuminate\Console\Command;
use Symfony\Component\Console\Attribute\AsCommand;
#[AsCommand('boost:ma-commande', 'Description courte de la commande')]
class MaCommand extends Command
{
public function handle(): int
{
// Logique de la commande...
$this->info('Commande executee avec succes.');
return self::SUCCESS;
// OU self::FAILURE en cas d'erreur
}
}
#[AsCommand('boost:ma-commande', 'Description')]
class MaCommand extends Command
{
protected $signature = 'boost:ma-commande
{--option-a : Description de l\'option A}
{argument : Description de l\'argument}';
public function handle(MonService $service): int
{
$optionA = $this->option('option-a');
$arg = $this->argument('argument');
// ...
return self::SUCCESS;
}
}
declare(strict_types=1);
test('boost:ma-commande executes successfully', function (): void {
$this->artisan('boost:ma-commande')
->assertSuccessful();
});
test('boost:ma-commande with options', function (): void {
$this->artisan('boost:ma-commande', ['--option-a' => true])
->assertSuccessful()
->expectsOutput('Resultat attendu');
});
declare(strict_types=1);
namespace Laravel\Boost\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class MonMiddleware
{
public function handle(Request $request, Closure $next): Response
{
/** @var Response $response */
$response = $next($request);
// Modifier la reponse apres traitement...
return $response;
}
}
// Dans une methode dediee ou directement dans boot()
$this->app->booted(function () use ($router): void {
$router->pushMiddlewareToGroup('web', MonMiddleware::class);
});
declare(strict_types=1);
namespace Laravel\Boost\Services;
class MonService
{
public function maMethode(): string
{
// Logique...
}
}
$this->app->singleton(MonService::class, fn (): MonService => new MonService);
.ai/
mon-package/
core.blade.php # Guidelines de base (toutes versions)
1/
core.blade.php # Guidelines specifiques a la v1
2/
core.blade.php # Guidelines specifiques a la v2
skill/
mon-skill/
SKILL.blade.php # Skill associe a la v2
SKILL.md # Documentation du skill
blade
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
# Mon Package
- Description du package et son role dans l'application.
- Conventions importantes a suivre.
@if($assist->hasPackage(\Laravel\Roster\Enums\Packages::SOME_PACKAGE))
## Integration avec Some Package
- Instructions specifiques quand les deux packages sont utilises ensemble.
@endif
bash
php artisan boost:install --guidelines
src/Mcp/Prompts/
MonPrompt/
MonPrompt.php # Classe du prompt
mon-prompt.blade.php # Contenu du prompt (template Blade)
bash
php artisan boost:install --skills
bash
php >= 8.2
composer
bash
# 1. Corriger le style de code + analyse statique + refactoring
composer lint
# 2. Lancer tous les tests (Unit, Feature, Arch)
composer test
# 3. OU tout en une commande
composer check