Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typically, I feel like this would be written as {{ $assist->bin() }}/pint --dirty, so that $assist->bin() would return the path without the trailing slash for clarity. Thoughts?

- 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