Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
a5b53be
Add Sail Support in Guideline
pushpak1300 Nov 1, 2025
e0142c7
Fix Markdown
pushpak1300 Nov 1, 2025
c4e4e56
Refactor
pushpak1300 Nov 4, 2025
4337a77
move method
pushpak1300 Nov 4, 2025
5c20313
Merge branch 'main' into sail_guidline_support
pushpak1300 Nov 4, 2025
15de371
Merge branch 'main' into sail_guidline_support
pushpak1300 Nov 6, 2025
1e09620
rename variables
pushpak1300 Nov 6, 2025
3065c86
Refactor GuidelineComposer.php
pushpak1300 Nov 6, 2025
b8573a1
Refactor Sail Command Usage
pushpak1300 Nov 7, 2025
a53aa59
Merge branch 'main' into sail_guidline_support
pushpak1300 Nov 7, 2025
0d187da
Refactor shouldUseSail method to handle empty selectedBoostFeatures case
pushpak1300 Nov 7, 2025
3aa2c8d
More controlled guideliens
pushpak1300 Nov 7, 2025
7f47c2e
Refactor command name
pushpak1300 Nov 7, 2025
c5db2f4
Refactor core.blade.php
pushpak1300 Nov 7, 2025
2935473
Refactor core.blade.php
pushpak1300 Nov 7, 2025
07164b1
Formatting
pushpak1300 Nov 7, 2025
da8a16d
Formatting
pushpak1300 Nov 7, 2025
c1c5e19
Formatting
pushpak1300 Nov 7, 2025
a5b1d69
Add nodePackageManager for backward support
pushpak1300 Nov 7, 2025
7184363
Merge branch 'main' into sail_guidline_support
pushpak1300 Nov 11, 2025
8d1586b
single quotes for consistency
joetannenbaum Nov 13, 2025
3851bf1
spaces around brackets for consistency
joetannenbaum Nov 13, 2025
8a2d4db
spaces around brackets for consistency
joetannenbaum Nov 13, 2025
0244ac1
extract commands to `command` method
joetannenbaum Nov 13, 2025
4fe14c7
wip
joetannenbaum Nov 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .ai/enforce-tests.blade.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Test Enforcement

- Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass.
- Run the minimum number of tests needed to ensure code quality and speed. Use `php artisan test` with a specific filename or filter.
- Run the minimum number of tests needed to ensure code quality and speed. Use `{{ $assist->artisan() }} test` with a specific filename or filter.
5 changes: 4 additions & 1 deletion .ai/filament/3/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Filament 3

## Version 3 Changes To Focus On
Expand All @@ -7,5 +10,5 @@
- Tables use the `Tables\Columns` namespace for table columns.
- A new `Filament\Forms\Components\RichEditor` component is available.
- Form and table schemas now use fluent method chaining.
- Added `php artisan filament:optimize` command for production optimization.
- Added `{{ $assist->artisan() }} filament:optimize` command for production optimization.
- Requires implementing `FilamentUser` contract for production access control.
5 changes: 4 additions & 1 deletion .ai/filament/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Filament
- Filament is used by this application, check how and where to follow existing application conventions.
- Filament is a Server-Driven UI (SDUI) framework for Laravel. It allows developers to define user interfaces in PHP using structured configuration objects. It is built on top of Livewire, Alpine.js, and Tailwind CSS.
- You can use the `search-docs` tool to get information from the official Filament documentation when needed. This is very useful for Artisan command arguments, specific code examples, testing functionality, relationship management, and ensuring you're following idiomatic practices.
- Utilize static `make()` methods for consistent component initialization.

### Artisan
- You must use the Filament specific Artisan commands to create new files or components for Filament. You can find these with the `list-artisan-commands` tool, or with `php artisan` and the `--help` option.
- You must use the Filament specific Artisan commands to create new files or components for Filament. You can find these with the `list-artisan-commands` tool, or with `{{ $assist->artisan() }}` and the `--help` option.
- Inspect the required options, always pass `--no-interaction`, and valid arguments for other options when applicable.

### Filament's Core Features
Expand Down
13 changes: 7 additions & 6 deletions .ai/folio/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Laravel Folio

- Laravel Folio is a file based router. With Laravel Folio, a new route is created for every Blade file within the configured Folio directory. For example, pages are usually in in `resources/views/pages/` and the file structure determines routes:
- `pages/index.blade.php` → `/`
- `pages/profile/index.blade.php` → `/profile`
- `pages/auth/login.blade.php` → `/auth/login`
- You may list available Folio routes using `php artisan folio:list` or using Boost's `list-routes` tool.
- You may list available Folio routes using `{{ $assist->artisan() }} folio:list` or using Boost's `list-routes` tool.

### New Pages & Routes
- Always create new `folio` pages and routes using `artisan folio:page [name]` following existing naming conventions.
- Always create new `folio` pages and routes using `{{ $assist->artisan() }} folio:page [name]` following existing naming conventions.

@verbatim
<code-snippet name="Example folio:page Commands for Automatic Routing" lang="shell">
// Creates: resources/views/pages/products.blade.php → /products
php artisan folio:page 'products'
{{ $assist->artisan() }} folio:page 'products'

// Creates: resources/views/pages/products/[id].blade.php → /products/{id}
php artisan folio:page 'products/[id]'
{{ $assist->artisan() }} folio:page 'products/[id]'
</code-snippet>
@endverbatim

- Add a 'name' to each new Folio page at the very top of the file so it has a named route available for other parts of the codebase to use.

Expand Down
9 changes: 8 additions & 1 deletion .ai/foundation.blade.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
# Laravel Boost Guidelines

The Laravel Boost guidelines are specifically curated by Laravel maintainers for this application. These guidelines should be followed closely to enhance the user's satisfaction building Laravel applications.
Expand Down Expand Up @@ -27,7 +30,11 @@
- Do not change the application's dependencies without approval.

## Frontend Bundling
- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `{{ $assist->nodePackageManager() }} run build`, `{{ $assist->nodePackageManager() }} run dev`, or `composer run dev`. Ask them.
@if ($assist->config->enforceSail)
- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `{{ $assist->composer() }} run dev`. Ask them.
@else
- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `{{ $assist->nodePackageManager() }} run build`, `{{ $assist->nodePackageManager() }} run dev`, or `{{ $assist->composer() }} run dev`. Ask them.
@endif

## Replies
- Be concise in your explanations - focus on what's important rather than explaining obvious details.
Expand Down
6 changes: 3 additions & 3 deletions .ai/laravel/11/core.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@

### New Artisan Commands
- List Artisan commands using Boost's MCP tool, if available. New commands available in Laravel 11:
- `php artisan make:enum`
- `php artisan make:class`
- `php artisan make:interface`
- `{{ $assist->artisan() }} make:enum`
- `{{ $assist->artisan() }} make:class`
- `{{ $assist->artisan() }} make:interface`
17 changes: 12 additions & 5 deletions .ai/laravel/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Do Things the Laravel Way

- Use `php artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool.
- If you're creating a generic PHP class, use `artisan make:class`.
- Use `{{ $assist->artisan() }} make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool.
- If you're creating a generic PHP class, use `{{ $assist->artisan() }} make:class`.
- Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior.

### Database
Expand All @@ -12,7 +15,7 @@
- Use Laravel's query builder for very complex database operations.

### Model Creation
- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `php artisan make:model`.
- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `{{ $assist->artisan() }} make:model`.

### APIs & Eloquent Resources
- For APIs, default to using Eloquent API Resources and API versioning unless existing API routes do not, then you should follow existing application convention.
Expand All @@ -36,7 +39,11 @@
### Testing
- When creating models for tests, use the factories for the models. Check if the factory has custom states that can be used before manually setting up the model.
- Faker: Use methods such as `$this->faker->word()` or `fake()->randomDigit()`. Follow existing conventions whether to use `$this->faker` or `fake()`.
- When creating tests, make use of `php artisan make:test [options] <name>` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests.
- When creating tests, make use of `{{ $assist->artisan() }} make:test [options] <name>` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests.

### Vite Error
- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `{{ $assist->nodePackageManager() }} run build` or ask the user to run `{{ $assist->nodePackageManager() }} run dev` or `composer run dev`.
@if ($assist->config->enforceSail)
- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `{{ $assist->composer() }} run dev` or ask the user to run it.
@else
- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `{{ $assist->nodePackageManager() }} run build` or ask the user to run `{{ $assist->nodePackageManager() }} run dev` or `{{ $assist->composer() }} run dev`.
@endif
5 changes: 4 additions & 1 deletion .ai/livewire/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Livewire Core
- Use the `search-docs` tool to find exact version specific documentation for how to write Livewire & Livewire tests.
- Use the `php artisan make:livewire [Posts\\CreatePost]` artisan command to create new components
- Use the `{{ $assist->artisan() }} make:livewire [Posts\\CreatePost]` artisan command to create new components
- State should live on the server, with the UI reflecting it.
- All Livewire requests hit the Laravel backend, they're like regular HTTP requests. Always validate form data, and run authorization checks in Livewire actions.

Expand Down
12 changes: 7 additions & 5 deletions .ai/pest/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
## Pest

@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
### Testing
- If you need to verify a feature is working, write or update a Unit / Feature test.

### Pest Tests
- All tests must be written using Pest. Use `php artisan make:test --pest <name>`.
- All tests must be written using Pest. Use `{{ $assist->artisan() }} make:test --pest <name>`.
- You must not remove any tests or test files from the tests directory without approval. These are not temporary or helper files - these are core to the application.
- Tests should test all of the happy paths, failure paths, and weird paths.
- Tests live in the `tests/Feature` and `tests/Unit` directories.
Expand All @@ -17,9 +19,9 @@

### Running Tests
- Run the minimal number of tests using an appropriate filter before finalizing code edits.
- To run all tests: `php artisan test`.
- To run all tests in a file: `php artisan test tests/Feature/ExampleTest.php`.
- To filter on a particular test name: `php artisan test --filter=testName` (recommended after making a change to a related file).
- To run all tests: `{{ $assist->artisan() }} test`.
- To run all tests in a file: `{{ $assist->artisan() }} test tests/Feature/ExampleTest.php`.
- To filter on a particular test name: `{{ $assist->artisan() }} test --filter=testName` (recommended after making a change to a related file).
- When the tests relating to your changes are passing, ask the user if they would like to run the entire test suite to ensure everything is still passing.

### Pest Assertions
Expand Down
11 changes: 7 additions & 4 deletions .ai/phpunit/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## PHPUnit Core

- This application uses PHPUnit for testing. All tests must be written as PHPUnit classes. Use `php artisan make:test --phpunit <name>` to create a new test.
- This application uses PHPUnit for testing. All tests must be written as PHPUnit classes. Use `{{ $assist->artisan() }} make:test --phpunit <name>` to create a new test.
- If you see a test using "Pest", convert it to PHPUnit.
- Every time a test has been updated, run that singular test.
- When the tests relating to your feature are passing, ask the user if they would like to also run the entire test suite to make sure everything is still passing.
Expand All @@ -9,6 +12,6 @@

### Running Tests
- Run the minimal number of tests, using an appropriate filter, before finalizing.
- To run all tests: `php artisan test`.
- To run all tests in a file: `php artisan test tests/Feature/ExampleTest.php`.
- To filter on a particular test name: `php artisan test --filter=testName` (recommended after making a change to a related file).
- To run all tests: `{{ $assist->artisan() }} test`.
- To run all tests in a file: `{{ $assist->artisan() }} test tests/Feature/ExampleTest.php`.
- To filter on a particular test name: `{{ $assist->artisan() }} test --filter=testName` (recommended after making a change to a related file).
7 changes: 5 additions & 2 deletions .ai/pint/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Laravel Pint Code Formatter

- You must run `vendor/bin/pint --dirty` before finalizing changes to ensure your code matches the project's expected style.
- Do not run `vendor/bin/pint --test`, simply run `vendor/bin/pint` to fix any formatting issues.
- You must run `{{ $assist->bin() }}pint --dirty` before finalizing changes to ensure your code matches the project's expected style.
- Do not run `{{ $assist->bin() }}pint --test`, simply run `{{ $assist->bin() }}pint` to fix any formatting issues.
11 changes: 11 additions & 0 deletions .ai/sail/core.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## Laravel Sail

- This project runs inside Laravel Sail's Docker containers. You MUST execute all commands through Sail.
- Start services using `vendor/bin/sail up -d` and stop them with `vendor/bin/sail stop`.
- Open the application in the browser by running `vendor/bin/sail open`.
- Always prefix PHP, Artisan, Composer, and Node commands** with `vendor/bin/sail`. Examples:
- Run migrations: `vendor/bin/sail artisan migrate`
- Install Composer packages: `vendor/bin/sail composer install`
- Run npm: `vendor/bin/sail npm run dev`
- Execute PHP scripts: `vendor/bin/sail php [script]`
- View all available Sail commands by running `vendor/bin/sail` without arguments.
5 changes: 4 additions & 1 deletion .ai/volt/core.blade.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
@php
/** @var \Laravel\Boost\Install\GuidelineAssist $assist */
@endphp
## Livewire Volt

- This project uses Livewire Volt for interactivity within its pages. New pages requiring interactivity must also use Livewire Volt. There is documentation available for it.
- Make new Volt components using `php artisan make:volt [name] [--test] [--pest]`
- Make new Volt components using `{{ $assist->artisan() }} make:volt [name] [--test] [--pest]`
- Volt is a **class-based** and **functional** API for Livewire that supports single-file components, allowing a component's PHP logic and Blade templates to co-exist in the same file
- Livewire Volt allows PHP logic and Blade templates in one file. Components use the @verbatim`@volt`@endverbatim directive.
- You must check existing Volt components to determine if they're functional or class based. If you can't detect that, ask the user which they prefer before writing a Volt component.
Expand Down
126 changes: 0 additions & 126 deletions all.php

This file was deleted.

4 changes: 1 addition & 3 deletions rector.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@
ReadOnlyPropertyRector::class,
EncapsedStringsToSprintfRector::class,
DisallowedEmptyRuleFixerRector::class,
FunctionLikeToFirstClassCallableRector::class => [
__DIR__.'src/Install/CodeEnvironmentsDetector.php',
],
FunctionLikeToFirstClassCallableRector::class,
])
->withPreparedSets(
deadCode: true,
Expand Down
Loading