git clone https://github.com/ComeOnOliver/skillshub
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/noartem/skills/laravel-prompting-patterns" ~/.claude/skills/comeonoliver-skillshub-laravel-prompting-patterns && rm -rf "$T"
skills/noartem/skills/laravel-prompting-patterns/SKILL.mdLaravel 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
pivot table migrationpost_tag - Add
in Post modelbelongsToMany - Add
in Tag modelbelongsToMany - Use
,attach()
,detach()
for management"sync()
Query Optimization
"Avoid N+1 on the posts index:
- Eager load
andauthor
relationshipscategory - Use
for comment totalswithCount('comments') - Add database indexes on
andpublished_at
"category_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
for product IDsRule::exists('products', 'id') - Validate nested items array:
must be integer, min 1items.*.quantity - Use
for conditional shipping addressRule::requiredIf() - Add custom rule for inventory check:
"new HasSufficientStock
API Endpoints
Generic
"Create an API for products"
Laravel-Specific
"Create RESTful product API:
- Resource controller:
with apiResource routesProductController - Use
for response transformationProductResource - Add
for index endpoint with paginationProductCollection - Protect with Sanctum middleware:
auth:sanctum - Return 201 on create, 204 on delete
- Use
andProductStoreRequest
for validation"ProductUpdateRequest
Pagination
"Paginate products API:
- Use
in controllerProduct::paginate(20) - Return with
ProductResource::collection($products) - Include meta:
,total
,per_page
,current_pagelast_page - Support
query parameter"?page=2
Filtering
"Add filtering to products API:
- Accept
query params?category=electronics&min_price=100 - Use
for conditional querieswhen() - Extract to
class for reusabilityProductFilters - 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
interfaceShouldQueue - Add
and$tries = 3$timeout = 30 - Handle failure in
methodfailed() - Tag job for Horizon:
"$tags = ['user:'.$user->id]
Queue Configuration
"Configure queue for payment processing:
- Use
connection for payments queueredis - Set
queue:work --queue=payments,default - Add
to 90 seconds in configretry_after - 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
,belongsToManymorphMany - Scopes:
,scopeActivescopePublished - Accessors/Mutators:
,get{Attribute}Attributeset{Attribute}Attribute - Casts:
protected $casts = ['published_at' => 'datetime']
Validation:
- Form Requests:
,UserStoreRequestProductUpdateRequest - Rules:
,required
,unique:table,columnexists:table,column - Custom Rules:
,new UppercaseRule::in(['admin', 'user'])
API:
- Resources:
,UserResourceProductCollection - Pagination:
,paginate()
,simplePaginate()cursorPaginate() - Rate Limiting:
middlewarethrottle:60,1
Jobs & Queues:
- Jobs:
,ShouldQueue
,dispatch()dispatchSync() - Chains:
,Bus::chain()Bus::batch() - Horizon: Tags, monitoring, failed job handling
Use Laravel's vocabulary. Get Laravel solutions.