Agent skill
laravel-laravel-prompting-patterns
Use Laravel-specific vocabulary—Eloquent patterns, Form Requests, API resources, jobs/queues—to get idiomatic framework code
Install this agent skill to your Project
npx add-skill https://github.com/noartem/skills/tree/main/skills/laravel-prompting-patterns
SKILL.md
Laravel Prompting Patterns
Use Laravel's vocabulary to get idiomatic code. Generic requests produce generic solutions that don't leverage the framework.
Database Operations
Generic
"Get all active users with their posts"
Laravel-Specific
"Query active users with eager-loaded posts using Eloquent:
User::where('active', true)
->with('posts')
->get();
Add a scope to User model: scopeActive($query)"
Relationships
"Set up a many-to-many relationship between Posts and Tags:
- Create
post_tagpivot table migration - Add
belongsToManyin Post model - Add
belongsToManyin Tag model - Use
attach(),detach(),sync()for management"
Query Optimization
"Avoid N+1 on the posts index:
- Eager load
authorandcategoryrelationships - Use
withCount('comments')for comment totals - Add database indexes on
published_atandcategory_id"
Validation
Generic
"Validate the user input"
Laravel-Specific
"Create UserStoreRequest with validation rules:
public function rules(): array
{
return [
'email' => ['required', 'email', 'unique:users,email'],
'password' => ['required', 'min:12', Password::defaults()],
'name' => ['required', 'string', 'max:255'],
];
}
Add custom error messages in messages() method"
Complex Validation
"Validate order creation:
- Use
Rule::exists('products', 'id')for product IDs - Validate nested items array:
items.*.quantitymust be integer, min 1 - Use
Rule::requiredIf()for conditional shipping address - Add custom rule for inventory check:
new HasSufficientStock"
API Endpoints
Generic
"Create an API for products"
Laravel-Specific
"Create RESTful product API:
- Resource controller:
ProductControllerwith apiResource routes - Use
ProductResourcefor response transformation - Add
ProductCollectionfor index endpoint with pagination - Protect with Sanctum middleware:
auth:sanctum - Return 201 on create, 204 on delete
- Use
ProductStoreRequestandProductUpdateRequestfor validation"
Pagination
"Paginate products API:
- Use
Product::paginate(20)in controller - Return with
ProductResource::collection($products) - Include meta:
total,per_page,current_page,last_page - Support
?page=2query parameter"
Filtering
"Add filtering to products API:
- Accept
?category=electronics&min_price=100query params - Use
when()for conditional queries - Extract to
ProductFiltersclass for reusability - Document query params in API docs"
Background Processing
Generic
"Send email after user registers"
Laravel-Specific
"Dispatch SendWelcomeEmail job after registration:
SendWelcomeEmail::dispatch($user)
->onQueue('emails')
->delay(now()->addMinutes(5));
- Implement
ShouldQueueinterface - Add
$tries = 3and$timeout = 30 - Handle failure in
failed()method - Tag job for Horizon:
$tags = ['user:'.$user->id]"
Queue Configuration
"Configure queue for payment processing:
- Use
redisconnection for payments queue - Set
queue:work --queue=payments,default - Add
retry_afterto 90 seconds in config - Monitor with Horizon dashboard"
Job Chaining
"Process order with job chain:
Bus::chain([
new ValidateInventory($order),
new ChargePayment($order),
new SendConfirmation($order),
])->dispatch();
If any job fails, chain stops. Handle in catch() callback."
Referencing Documentation
Effective References
"Implement according to Laravel's Eloquent Relationships docs"
"Follow Laravel's Form Request Validation pattern"
"Use Laravel's API Resource pattern for response transformation"
"Configure queues per Laravel Queue docs"
Pattern Catalog
Models & Eloquent:
- Relationships:
hasMany,belongsTo,belongsToMany,morphMany - Scopes:
scopeActive,scopePublished - Accessors/Mutators:
get{Attribute}Attribute,set{Attribute}Attribute - Casts:
protected $casts = ['published_at' => 'datetime']
Validation:
- Form Requests:
UserStoreRequest,ProductUpdateRequest - Rules:
required,unique:table,column,exists:table,column - Custom Rules:
new Uppercase,Rule::in(['admin', 'user'])
API:
- Resources:
UserResource,ProductCollection - Pagination:
paginate(),simplePaginate(),cursorPaginate() - Rate Limiting:
throttle:60,1middleware
Jobs & Queues:
- Jobs:
ShouldQueue,dispatch(),dispatchSync() - Chains:
Bus::chain(),Bus::batch() - Horizon: Tags, monitoring, failed job handling
Use Laravel's vocabulary. Get Laravel solutions.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
laravel-transactions-and-consistency
Wrap multi-write operations in transactions; use dispatchAfterCommit and idempotency patterns to ensure consistency
laravel-filesystem-uploads
Store and serve files via Storage; set visibility, generate URLs, and handle streaming safely
laravel-task-scheduling
Schedule tasks with safety; use withoutOverlapping, onOneServer, and visibility settings for reliable cron execution
laravel-dependencies-trim-packages
Remove unneeded Composer packages and assets to improve boot time, memory, and security surface
laravel-controller-tests
Write focused controller tests using HTTP assertions; keep heavy logic in Actions/Services and unit test them
laravel-strategy-pattern
Use the Strategy pattern to select behavior at runtime; bind multiple implementations to a shared interface
Didn't find tool you were looking for?