VS Code Extension · v5.0.0

Enterprise Laravel
intelligence for
VS Code

Virtual types, Eloquent completion, Blade analysis, Livewire 3/4, Inertia, Filament v4, the Laravel 13 AI SDK, and native Enum support. Zero helper files. No PHP stubs generated. All intelligence lives in the editor.

147+
Features
44
Commands
36
Completion Providers
0
Helper Files Needed
app/Http/Controllers/PostController.php
// Eloquent: type-safe completions from live DB schema public function index() { return Post::whereStatus( ← virtual method PostStatus::Active ← enum case )->with('author') ->withCount('comments') ->paginate(15); } // Routing: route() with live named-route completions return redirect()->route( 'posts.show', ← autocompleted ['post' => $post] ); // Laravel 13 AI SDK use Laravel\Ai\Facades\Ai; $response = Ai::text() ->using('anthropic') ← 12 providers ->withSystemPrompt('...') ->generate($userMessage);
What's Inside

Everything Laravel developers need,
in one extension.

Laravel Maestro synthesizes completions, hover docs, go-to-definition, diagnostics, and code generation directly from your project's AST and live PHP runtime — no generated stub files, no ide-helper, no configuration needed.

🛣
Route Intelligence
Autocomplete route('name') with live route data. Ctrl+Click controller strings to jump directly to the method. CodeLens badges on every controller action.
🗄
Eloquent Virtualization
Column completions from live DB schema. Virtual where* magic methods. Accessor, scope, and relationship completions. No helper files generated.
🧩
Blade Intelligence
All 47 directives with snippet expansion. <x-component> tag completions with typed prop attributes read directly from @props.
⚡
Livewire 3 & 4
38 wire: directive completions. Property names in wire:model. Action names in wire:click. Volt helper completions. File rename updates all usages.
↗
Inertia.js
Page name completions for Inertia::render(). Go-to-Definition from PHP to Vue/React page component. Inertia page generator for all three frameworks.
🔷
Filament v3 & v4
Field type completions (35 types). Relation manager generator. Full resource generator with 4 pages, filters, actions, bulk actions, and SoftDeletes scope.
🤖
Laravel 13 AI SDK
Ai::text(), Ai::embed(), Ai::image(), Ai::audio() chain completions. 12 AI providers. whereVectorSimilarTo() for pgvector. Agent & Tool generators.
🔢
PHP Enums
Auto-indexes all enums in app/Enums/. Case completions, from()/tryFrom(), match() arm generation, $casts completion, hover with value table.
🔍
Live Diagnostics
Red/yellow underlines for unknown routes, views, components, translations. N+1 query detection. Guarded attribute warnings. env() outside config files.
🏗
33 Code Generators
Interactive scaffolding for every Laravel artifact — from Controllers to Dusk tests. Uses QuickPick and InputBox dialogs. Injected via WorkspaceEdit (single undo).
📊
Model UI Webview
Visual editor for Eloquent models. Edit $fillable, add casts, define relationships — all from a graphical panel. Changes written back as real PHP.
🔌
ide.json Extensibility
Drop an ide.json to teach the extension about custom package functions. Dynamically registers completion providers for route, view, config, translation, model, and column types.
Complete Feature Reference

Every capability, documented.

A comprehensive list of every provider, generator, and intelligence feature included in Laravel Maestro v5.

🛣 Routing Intelligence
Feature Description Badge
Named route completion Autocomplete route('name'), to_route('name'), redirect()->route('name') with live route data, method badges, URI preview, and middleware list Core
Route hover documentation Hover any route string to see HTTP methods, URI, controller action, middleware stack, and required parameters in a rich panel Core
Go-to-Definition Ctrl+Click on 'UserController@index', a route name, or a view string to jump directly to the file and line Core
CodeLens route badges [GET /users/{id}] ghost-text badges appear above every public controller method, clicking opens the Route List panel Core
Route List webview Full filterable table of all routes with method, URI, name, action, middleware, and parameters. Opened via Show Route List command Core
Route inlay hints Ghost-text parameter names shown inline: route('posts.show', id: $id) Core
Workspace-wide rename Rename a route name once; all route('old') calls across every PHP and Blade file are updated in a single undoable operation Core
Middleware completions Autocomplete middleware names in ->middleware('|') with built-in and project-specific middleware from the route index Core
Wayfinder (JS/TS) route('|') completions inside TypeScript, JavaScript, and Vue files for Laravel Wayfinder users New
🗄 Eloquent Intelligence
Feature Description Badge
where* magic methods Virtual whereEmail(), whereNotStatus(), orWhereCreatedAt() etc. generated from live DB column names Core
Column property completions $model->column_name with type annotation and nullable indicator, sourced directly from Schema::getColumnListing() Core
Relationship completions All hasOne, hasMany, belongsTo, morphMany etc. relationships on $model->| Core
_count / _exists accessors $model->comments_count and $model->comments_exists completions for withCount/withExists eager loads Core
Scope completions Custom query scopes ::active(), ::withPendingOrders() — including PHP 8 #[Scope] attribute-based scopes Core
Accessor completions getFirstNameAttribute() → virtual $model->first_name. New-style Attribute::make() accessors also detected Core
Mass-assignment keys User::create(['|']) and $model->fill(['|']) suggest all $fillable fields with their PHP types Core
Factory state completions User::factory()-> shows all standard methods (create, state, sequence, has, for, recycle) plus custom state methods from the factory class Core
Variable type inference Backward-scans up to 60 lines to infer $user = User::find($id) and provides $user->| completions for that model Core
New Eloquent builder methods 22 newer methods: findSole(), withWhereRelation(), createOrFirst(), toRawSql(), upsert(), lazy(), insertOrIgnore() etc. New
resolveRelationUsing() Dynamic relations registered in service providers are detected and appear in $model->| completions New
Facade method completions Full method completions for Cache::, DB::, Mail::, Storage::, Auth::, Event::, Log::, Queue::, Session::, Hash::, Http::, Gate:: New
Model UI Webview Visual panel (📊 CodeLens button on every Model class) to edit $fillable, add casts, and define relationships without touching PHP directly New
Inlay hints for factories User::factory()->create(['name' => /* string */ ...]) — ghost-type annotations on every fillable key Core
N+1 query detection Diagnostic warning when a relationship is accessed inside a foreach loop without prior eager loading via with() New
Unchecked find() warning Flags $x = Model::find($id) followed by $x->property without a null check New
🧩 Blade Template Intelligence
Feature Description Badge
47 directive completions All Blade directives with snippet expansion: @if, @foreach, @can, @vite, @class, @selected, @teleport, @volt, and more Core
<x-component> tags Autocomplete all anonymous and class-based Blade components with required props auto-inserted as a snippet Core
Component attribute completions Type-check HTML attributes against the @props([...]) declaration: <x-alert | shows all typed props Core
View name completions @include('|'), @extends('|'), view('|') autocomplete from all discovered Blade views Core
Component hover Hover <x-alert> to see the component class, file path, and prop table Core
Blade component rename Rename a .blade.php or component PHP class file — all <x-component> usages are updated across the workspace New
Extract Blade component Select any HTML in a Blade file → Quick Fix: "Extract to Blade component". Detects $variables and creates the @props declaration automatically New
View Usages CodeLens "👁 Find view usages" lens on every Blade file — triggers workspace-wide search for all places the view is referenced New
Twig view completions view('file.twig') completions for projects using the TwigBridge package New
⚡ Livewire 3 & 4
Feature Description Badge
38 wire: directives wire:model, wire:model.live, wire:click.prevent, wire:loading.delay, wire:navigate.hover, wire:current, wire:poll, wire:confirm, and 30 more Core
wire:model property names After wire:model=" — lists all public Livewire properties from the backing component class Core
wire:click action names After wire:click=" — lists all public action methods with parameter snippets Core
@livewire('|') completions Component name completions for the @livewire() directive and <livewire:> tags Core
$this->| completions Inside a Livewire component class, $this->| shows properties, actions, computed properties, and lifecycle hooks Core
Volt helper completions state(), computed(), mount(), action(), on(), url(), lazy(), locked(), layout() in Volt .blade.php files Core
Event dispatch completions $this->dispatch('|') suggests known event names from all indexed components New
Livewire rename handler File rename triggers workspace-wide update of all @livewire('component-name') references New
Go-to-Definition Ctrl+Click a Livewire component tag to jump to the PHP class or Volt file Core
Hover documentation Hover a Livewire component name to see its properties, actions, and computed properties Core
🤖 Laravel 13 — AI SDK & New APIs
Feature Description Badge
Ai:: facade completions Ai::text(), Ai::embed(), Ai::image(), Ai::audio(), Ai::agent(), Ai::vectorStore() Laravel 13 AI
Text generation chain Ai::text()-> chain: using(), withSystemPrompt(), withTools(), withProviderOptions(), stream(), temperature(), maxTokens() Laravel 13 AI
Provider completions ->using('|') completes all 12 supported providers: openai, anthropic, deepseek, mistral, cohere, google, groq, openrouter, azure, ollama, huggingface, replicate Laravel 13 AI
Audio API chain Audio::of('text')->: voice(), speed(), format(), asBase64(), asStream(), transcribe() Laravel 13 AI
Image API chain Ai::image('prompt')->: size(), style(), quality(), n(), url(), base64() Laravel 13 AI
Agent completions ->prompt(), ->withTool(), ->maxSteps(), ->withMemory(), ->stream(), ->onStep() Laravel 13 AI
Vector search completions whereVectorSimilarTo(), orderByVectorSimilarityTo(), withEmbedding(), nearestNeighbors() on the query builder Laravel 13 AI
Cache::touch() New Laravel 13 method — extend a cached item's TTL without fetching it. Completions, signature, and documentation Laravel 13
Queue::route() New class-based queue routing. Completions inside boot() with job class and queue name Laravel 13
JSON:API resource chain ->withLinks(), ->withMeta(), ->withIncluded(), ->sparseFieldset(), ->paginationLinks() Laravel 13
Generate AI Agent Interactive generator for app/Ai/Agents/MyAgent.php — 4 types (Text, Search, Vision, Audio), provider selection, system prompt Laravel 13 AI
Generate AI Tool Interactive generator for app/Ai/Tools/MyTool.php with JSON Schema parameters and handle() stub Laravel 13 AI
Generate JSON:API Resource Full JsonApiResource subclass with attributes(), relationships(), links(), meta() — auto-inferred from model columns Laravel 13
Hover documentation All AI SDK methods show Laravel 13 docs inline, including parameter types and return values Laravel 13 AI
🔢 PHP Enums — Full Support
Feature Description Badge
Auto-indexing Scans app/Enums/, app/Enum/, and app/Models/Enums/ on startup. Parses backing type, cases, values, labels from label() method match arms New
Case completions Status::| lists all cases with values (= 'active') and labels. Backing type determines available methods New
Static method completions Status:: → from(), tryFrom(), cases(), values(), labels(), options(), collect(), random(). Pure enums hide from/tryFrom New
Instance method completions Status::Active->| → value, name, label, color, is(), isNot(), in(), notIn() New
$casts completions 'status' => | inside $casts array suggests all indexed enum classes with ::class appended New
Validation rule completions Rule::enum('|') and 'enum:MyEnum' syntax both autocomplete to all indexed enum FQNs New
match() arm generation Inside match($status) { |, infers the enum type from the variable and generates all case arms as snippets New
Hover documentation Hover any enum class name to see a formatted table of all cases, backing values, labels, and implemented interfaces New
Go-to-Definition Ctrl+Click any enum class name to jump directly to the enum declaration New
Cast diagnostic Warns when a $casts entry maps to a class ending in Status/Type/State/Role that isn't found in the enum index New
Usage Guide

How to use every major feature.

Laravel Maestro works automatically — just open a Laravel project containing an artisan file. Here's how to get the most from each capability.

01
Route Completions
Type route(' anywhere in PHP or Blade — the extension detects the context and offers all named routes from your live application. Routes are extracted by running extract.php in the background.
// Type route(' and see all named routes
return redirect()->route('posts.show', [
    'post' => $post
]);
Ctrl+Click any route name or 'Controller@method' string to jump directly to the file and method line. F2 on a route name renames all usages across the workspace.
02
Eloquent Completions
Type Model:: or $model-> to get virtual completions. Column names come from your live DB schema. Scopes, accessors, and relationships are parsed from the AST.
// Virtual where* from DB columns
User::whereEmailVerifiedAt(null)
    ->whereActive(true)
    ->with('posts')
    ->withCount('comments')
    ->paginate();

// $model-> shows columns + relations
$user->posts_count; // withCount accessor
03
Blade Components
Type <x- to see all components. The extension reads @props([...]) declarations to offer typed attribute completions. Hover any component tag for full prop documentation.
<!-- Props from @props are typed -->
<x-alert
  type="error"    <-- autocompleted
  :message="$msg"  <-- required prop
/>

<!-- @include completes view names -->
@include('partials.header')
04
Livewire wire: Directives
Type wire: anywhere in a Blade file to get all 38 directives. For wire:model=", the extension reads the backing PHP class to offer property names. For wire:click=", it offers action method names.
<!-- All wire: directives autocomplete -->
<input
  wire:model.live="search"
  wire:loading.class="opacity-50"
/>

<button
  wire:click="save"
  wire:confirm="Are you sure?"
>Save</button>
05
Laravel 13 AI SDK
Type Ai:: to see all AI facade methods. Chain completions work automatically. Select a provider by typing ->using(' — all 12 providers are offered.
use Laravel\Ai\Facades\Ai;

// Text generation
$text = Ai::text()
    ->using('anthropic')
    ->withSystemPrompt('...')
    ->generate($prompt);

// Vector similarity search
DB::table('docs')
    ->whereVectorSimilarTo('embedding', $query)
    ->limit(10)
    ->get();
Generate a new Agent via Ctrl+Shift+P → Generate AI Agent. Select type (Text/Search/Vision/Audio) and provider. The stub is created in app/Ai/Agents/.
06
PHP Enums
Enums in app/Enums/ are indexed automatically. Type MyEnum:: to see all cases. The extension parses backing types, values, and label() method returns.
enum PostStatus: string
{
    case Active   = 'active';
    case Draft    = 'draft';
    case Archived = 'archived';
}

// All three cases appear in completions
Post::where('status', PostStatus::Active)

// $casts completion includes enum classes
protected $casts = [
    'status' => PostStatus::class,
];
07
Code Generation
Open the Command Palette (Ctrl+Shift+P) and type Laravel Maestro to see all 44 commands. Generators use interactive dialogs — no terminal required.
  • Generate Model → choose migration, factory, controller, policy, resource
  • Generate Factory → faker values inferred from column names and types
  • Generate Filament Resource → full 4-page resource with relation managers
  • Generate Nova Resource → fields auto-inferred from model columns
  • Generate Dusk Test → BrowserTest, Page Object, or Component Object
  • Generate Migration → Create/Modify/Blank with automatic timestamp
  • Generate Enum → string-backed, int-backed, or pure
08
Diagnostics & Quick Fixes
Diagnostics appear automatically as you type. Yellow warnings highlight unknown routes, views, components, and translations. Quick Fixes are available via the lightbulb icon or Ctrl+..
  • Unknown route('name') → yellow underline + hover for closest match
  • Unknown view('name') → warning with file path suggestion
  • Unknown <x-component> → warning in Blade files
  • env() outside config/ → warning: use config() instead
  • N+1 query: relation in foreach without eager loading
  • Quick Fix: Extract string to translation file (__('key'))
  • Quick Fix: Populate $fillable from DB schema
  • Quick Fix: Convert 'unique:table' → Rule::unique('table')
All Commands

44 commands available via the palette.

Open with Ctrl+Shift+P (Windows/Linux) or ⌘+Shift+P (macOS) and type Laravel Maestro to filter.

generateController
Resource, API, Invokable, or Plain controller with optional model binding
generateModel
Eloquent model with optional migration, factory, resource, controller, policy cascade
generateMigration
Create, Modify, or Blank migration with auto-generated timestamp prefix
generateFactory
Model factory with faker values inferred from column names and DB types
generateRequest
Form Request with authorize() and rules() stubs
generateResource
Standard JSON API Resource or JSON:API (Laravel 13) Resource
generateJsonApiResource
Full Laravel 13 JsonApiResource with attributes, relationships, links, meta
generateJob
Queueable job implementing ShouldQueue
generateEvent
Dispatchable event with InteractsWithSockets
generateListener
Event listener with optional queuing
generateMail
Mailable with envelope() and content() methods (Laravel 9+ style)
generateNotification
Notification with mail, database, and broadcast channels
generatePolicy
Policy with all 7 CRUD methods, optional model binding
generateObserver
Eloquent observer with method picker (creating, created, updating, etc.)
generateSeeder
Database seeder with WithoutModelEvents
generateEnum
PHP 8.1+ enum — string-backed, int-backed, or pure; in app/Enums/
generateTrait
PHP trait in app/Traits/, app/Concerns/, or app/Models/Concerns/
generateFacade
Facade + Service pair — creates both the Facade class and the backing service
generateCommand
Artisan command with interactive signature and description prompts
generateMiddleware
HTTP middleware with handle() method and correct return type
generateChannel
Broadcasting channel with join() authorization method
generateProvider
Service provider with register() and boot()
generatePivotTable
Many-to-many pivot migration — alphabetically ordered, with foreign keys
generateConfigFile
New config file in config/ with env() integration stub
generateValidationRule
Custom validation rule (standard or implicit) implementing ValidationRule
generateDto
DTO class generated from an existing FormRequest's rules() fields
generateLivewire
Livewire component — class-based or Volt functional style
generateInertiaPage
Inertia page component — Vue 3 SFC, React TSX, or Svelte
generateFilamentResource
Full Filament v4 resource with 4 pages, filters, actions, and SoftDeletes
generateFilamentRelationManager
Filament RelationManager with table, form, and bulk actions
generateNovaResource
Laravel Nova resource — fields, filters, lenses, actions; auto-inferred from model
generateDuskTest
Dusk BrowserTest, Page Object, or Component Object
generateAiAgent
Laravel 13 AI Agent — Text, Search (RAG), Vision, or Audio; in app/Ai/Agents/
generateAiTool
Laravel 13 AI Tool with JSON Schema parameters and handle() stub
reindexWorkspace
Force a full re-index: AST walk + PHP runtime extraction
showRouteList
Open the filterable Route List webview panel
openModelUi
Open the visual Model UI panel for the model under cursor
runArtisan
Interactive Artisan runner — pick command, options, arguments from QuickPick
runMigrations
In-IDE migration actions: migrate, fresh, rollback, status, seed, wipe
goToPolicy
Navigate from a Model class to its Policy file
goToFactory
Navigate from a Model class to its Factory file
goToObserver
Navigate from a Model class to its Observer file
navigateToListener
Navigate from an Event class to its registered Listener files
extractToTranslation
Quick Fix: extract a raw string to lang/en/*.php and replace with __('key')
Configuration

All settings, with defaults.

Configure via File → Preferences → Settings and search for laravelMaestro, or edit settings.json directly.

Setting Key Default Description
phpExecutable "php" Path to the PHP binary used for runtime extraction. Set to "php8.3" or an absolute path if needed.
runtimeExtractionTimeout 10000 Maximum milliseconds for the PHP runtime extractor. Increase for slow environments.
enableEloquentCompletion true Enable virtual Eloquent method, column, and relationship completions.
enableRouteCompletion true Enable route name completions for route(), to_route(), and related functions.
enableBladeCompletion true Enable Blade directive, component tag, and attribute completions.
enableLivewireCompletion true Enable Livewire wire: directive, property, and action completions.
enableInertiaCompletion true Enable Inertia.js page name completions.
enableFilamentCompletion true Enable Filament field and column type completions.
enableEnumCompletion true Enable PHP Enum case completions, hover documentation, and cast diagnostics.
enableInlayHints true Enable ghost-text type annotations on factory keys, route parameters, and config values.
enableCodeLens true Enable route badges on controller methods and the 📊 Model UI button on Eloquent models.
enableDiagnostics true Enable live error detection for unknown routes, views, components, and N+1 queries.
enablePackageProviders true Enable completions for spatie/laravel-query-builder, Pennant, Nova, nWidart modules, etc.
excludePatterns ["vendor/**", ...] Glob patterns excluded from AST indexing. Add your own build directories here.
lruCacheSize 500 Maximum number of parsed AST entries in the LRU cache. Increase for very large codebases.
aiDefaultProvider "openai" Default AI provider shown in completions for ->using('|') when using the Laravel 13 AI SDK.
enumDirectories ["app/Enums", ...] Directories to scan for PHP Enum definitions. Add custom paths for non-standard structures.
modulesPath "Modules" Root directory for nWidart/laravel-modules. Change if your modules live elsewhere.
Installation

Get started in under a minute.

Laravel Maestro activates automatically when VS Code finds an artisan file in your workspace root. No configuration required for most projects.

1.85+
VS Code
PHP 8.1+
Required
Laravel 9+
Supported
Node 18+
Extension Host
Option 1: VS Code Marketplace
Install directly from the VS Code Extensions panel:
ext install laravel-maestro.laravel-maestro
Or search "Laravel Maestro" in the Extensions sidebar (Ctrl+Shift+X).
Option 2: Install from .vsix
Download the .vsix file and install manually:
code --install-extension laravel-maestro-5.0.0.vsix
Or via Extensions panel → ⋯ menu → Install from VSIX…
Option 3: Build from Source
Clone the repository and build with npm:
git clone https://github.com/laravel-maestro/laravel-maestro
cd laravel-maestro
npm install
node esbuild.js --production
npx vsce package
Safe-Boot for DB Safety
The runtime extractor sets VSCODE_LARAVEL_INDEXING=true before bootstrapping your app. Guard against accidental side-effects:
// AppServiceProvider::boot()
if (env('VSCODE_LARAVEL_INDEXING')) {
    return; // skip migrations, queues, etc.
}