laravel-12
npx skills add https://github.com/matula/laravel-claude-marketplace --skill laravel-12
Agent 安装分布
Skill 文档
Laravel 12 Development Skill
This skill provides comprehensive guidance for developing high-quality Laravel 12 applications using modern best practices, proper architecture patterns, and Laravel’s streamlined structure.
Purpose
Provide expert-level Laravel 12 development guidance covering:
- Modern Laravel 12 streamlined architecture and file structure
- Eloquent ORM patterns with proper type hints and relationships
- Authentication and authorization using current best practices
- Form validation with Form Request classes
- Queue and job management for background processing
- Database migrations, models, and API development
- Testing patterns and conventions
- Configuration and environment management
When to Use
Use this skill when:
- Creating or working with Laravel 12 applications
- Building models, controllers, migrations, or any Laravel components
- Implementing authentication or authorization
- Creating APIs with Eloquent resources
- Writing database queries or working with relationships
- Setting up queues and background jobs
- Writing form validation
- Configuring Laravel applications
- Following Laravel best practices and conventions
- Ensuring proper Laravel 12 structure compliance
Core Principles
1. Use Artisan Commands
Always create files using php artisan make: commands with appropriate options:
# Models with migrations, factories, seeders
php artisan make:model Post -mfs
# Form Requests for validation
php artisan make:request StorePostRequest
# Controllers
php artisan make:controller PostController --resource
# Jobs
php artisan make:job ProcessPodcast
# Generic PHP classes
php artisan make:class Services/PaymentService
Important: Pass --no-interaction when running commands programmatically.
2. Follow Laravel 12 Streamlined Structure
Laravel 12 uses a simplified structure:
- No
app/Http/Middleware/directory – register middleware inbootstrap/app.php - No
app/Console/Kernel.php– usebootstrap/app.phporroutes/console.php - Commands auto-register from
app/Console/Commands/ - Central configuration in
bootstrap/app.phpfor middleware, routing, exceptions
Read references/structure.md for complete details on Laravel 12 architecture.
3. Authentication: Always Use $request->user()
CRITICAL: Always retrieve authenticated user via $request->user(), never use auth()->user() or Auth::user():
// â
CORRECT
public function index(Request $request): Response
{
$user = $request->user();
// ...
}
// â WRONG
public function index(): Response
{
$user = auth()->user(); // Don't do this
}
Read references/authentication.md for complete authentication and authorization guidance.
4. Database: Eloquent Over DB Facade
Prefer Eloquent models and relationships over raw queries:
// â
PREFER
$users = User::query()->where('active', true)->get();
// â AVOID
$users = DB::table('users')->where('active', true)->get();
Prevent N+1 queries by eager loading relationships:
// â
GOOD - Prevents N+1
$posts = Post::with('user', 'comments')->get();
// â BAD - Causes N+1
$posts = Post::all();
foreach ($posts as $post) {
echo $post->user->name; // New query each iteration
}
Read references/database.md for Eloquent patterns, relationships, migrations, and query optimization.
5. Validation: Always Use Form Requests
Never use inline validation. Always create Form Request classes:
php artisan make:request StorePostRequest
Form Requests should include:
- Validation rules (check project conventions for array vs string format)
- Custom error messages
- Authorization logic when needed
public function rules(): array
{
return [
'title' => ['required', 'string', 'max:255'],
'body' => ['required', 'string'],
];
}
Read references/validation.md for complete validation patterns and examples.
6. Configuration: Never Use env() Outside Config Files
// â WRONG
$apiKey = env('API_KEY');
// â
CORRECT
$apiKey = config('services.api.key');
Environment variables should only be accessed in config/*.php files, then accessed via config() helper throughout the application.
7. Background Processing: Use Queues
Use queued jobs with ShouldQueue interface for time-consuming operations:
php artisan make:job ProcessPodcast
class ProcessPodcast implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public int $tries = 3;
public int $timeout = 120;
public function __construct(public Podcast $podcast) {}
public function handle(): void
{
$this->podcast->process();
}
}
Read references/queues.md for queue patterns, job chains, batches, and worker management.
Working with Models
Model Creation
When creating models, use appropriate flags:
# Model with migration, factory, seeder
php artisan make:model Post -mfs
# Model with migration, factory, seeder, policy, controller
php artisan make:model Post -mfsc --policy
Model Conventions
- Use return type hints on relationships:
public function posts(): HasMany
{
return $this->hasMany(Post::class);
}
- Use
casts()method for type casting:
protected function casts(): array
{
return [
'published_at' => 'datetime',
'is_featured' => 'boolean',
'metadata' => 'array',
];
}
- Use constructor property promotion:
public function __construct(
public string $name,
public int $age,
) {}
Working with Controllers
- Type-hint Request in controller methods
- Use resource controllers for CRUD operations
- Return proper response types with type hints
- Use Form Requests for validation
- Keep controllers thin – move business logic to services/actions
public function store(StorePostRequest $request): RedirectResponse
{
$post = Post::create($request->validated());
return redirect()->route('posts.show', $post);
}
API Development
Use Eloquent API Resources for consistent API responses:
php artisan make:resource PostResource
class PostResource extends JsonResource
{
public function toArray($request): array
{
return [
'id' => $this->id,
'title' => $this->title,
'author' => new UserResource($this->whenLoaded('user')),
];
}
}
Migrations
CRITICAL: When modifying columns, include ALL previous attributes or they will be lost:
// â WRONG - Loses 'nullable' attribute
$table->string('email')->unique()->change();
// â
CORRECT - Preserves all attributes
$table->string('email')->nullable()->unique()->change();
Reference Files
This skill includes detailed reference files for specific topics:
references/structure.md– Laravel 12 file structure, Artisan commands, configurationreferences/authentication.md– Authentication, authorization, policies, gatesreferences/database.md– Eloquent, relationships, migrations, queries, API resourcesreferences/validation.md– Form Requests, validation rules, custom messagesreferences/queues.md– Jobs, queues, workers, chains, batches
Read the appropriate reference file(s) when working on related tasks to ensure following best practices.
PHP Conventions
- Always use curly braces for control structures, even single-line
- Use explicit return type declarations for all methods
- Use PHP 8+ constructor property promotion
- Use type hints for method parameters
- Prefer PHPDoc blocks over inline comments
protected function isAccessible(User $user, ?string $path = null): bool
{
// Implementation
}
Best Practices Summary
- â
Use
php artisan make:commands to create files - â Follow Laravel 12 streamlined structure
- â
Always use
$request->user()for authentication - â Prefer Eloquent over DB facade
- â Always create Form Request classes for validation
- â
Never use
env()outside config files - â Use queues for time-consuming operations
- â Add return type hints on relationships
- â Eager load to prevent N+1 queries
- â Include all attributes when modifying columns
- â
Use named routes with
route()helper - â Use API Resources for APIs
- â Keep controllers thin
- â Write descriptive, type-safe code
Common Tasks Workflow
Creating a New Resource
- Create model with migrations and factory:
php artisan make:model Post -mf - Create Form Requests:
php artisan make:request StorePostRequest - Create controller:
php artisan make:controller PostController --resource - Create API resource (if needed):
php artisan make:resource PostResource - Define routes in appropriate routes file with named routes
- Write tests for all functionality
Adding Authentication to Routes
- Use middleware in route definition or
bootstrap/app.php - Access user via
$request->user() - Use policies for authorization
- Return appropriate responses for unauthorized access
This skill ensures Laravel applications follow modern best practices, maintain clean architecture, and leverage Laravel 12’s streamlined structure effectively.