Laravel
// Build robust Laravel apps avoiding Eloquent traps, queue failures, and auth pitfalls.
$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
nameLaravel
sluglaravel
version1.0.1
descriptionBuild robust Laravel apps avoiding Eloquent traps, queue failures, and auth pitfalls.
metadata[object Object]
Quick Reference
| Topic | File |
|---|---|
| N+1 queries, eager loading, accessors, observers | eloquent.md |
| Validation, middleware order, dependency injection | controllers.md |
| Job serialization, retries, failed jobs | queues.md |
| Guards, policies, gates, Sanctum tokens | auth.md |
| XSS escaping, components, slots | blade.md |
| Commands, scheduling, tinker | artisan.md |
Critical Rules
- Eager load relationships —
with('posts')not lazy->postsin loop (N+1) preventLazyLoading()in dev AppServiceProvider — crashes on N+1, catches earlyenv()only in config files — returns null afterconfig:cache$fillablewhitelist fields —$guarded = []allows mass assignment attacksfind()returns null — usefindOrFail()to avoid null checks- Job properties serialize models as ID — re-fetched on process, may be stale/deleted
route:cacherequires controller routes — closures break cached routesDB::transaction()doesn't catchexit/timeout — only exceptions roll backRefreshDatabaseuses transactions — faster thanDatabaseMigrations{!! $html !!}skips escaping — XSS vector, use{{ }}by default- Middleware order matters — earlier middleware wraps later execution
requiredvalidation passes empty string — userequired|filledfor contentfirstOrCreatepersists immediately —firstOrNewreturns unsaved model- Route model binding uses
id— overridegetRouteKeyName()for slug