laravel:upgrade-13
SkillDev toolsUpgrade an app from Laravel 12.x to 13.x safely; PHP 8.3 baseline, dependency bumps, breaking-change checklist, and verification steps
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the laravel:upgrade-13 skill
What this skill tells your AI
The instructions your AI receives, as published by jpcaparas/superpowers-laravel in skills/upgrade-to-laravel-13/SKILL.md and read by ahel’s review.
Laravel 13 (released March 2026) is a deliberately small upgrade. Work through this checklist in a dedicated branch with green tests before and after.
Prerequisites
- PHP 8.3+ (13.x supports PHP 8.3–8.5; 8.2 is dropped)
- Green test suite on 12.x before starting
Commands
# Bump core dependencies in composer.json
"laravel/framework": "^13.0",
"laravel/tinker": "^3.0",
"phpunit/phpunit": "^12.0",
"pestphp/pest": "^4.0"
sail composer update # or: composer update
# Verify
sail artisan about # or: php artisan about
sail artisan test --parallel # or: php artisan test --parallel
Breaking-Change Checklist
High impact:
- Replace
VerifyCsrfTokenreferences withPreventRequestForgery(old name is a deprecated alias) — seelaravel:request-forgery-protection - PHP 8.3 minimum; upgrade PHP before
composer update
Medium impact:
config/cache.phpgainsserializable_classes(defaultfalse); allow-list any classes you store in cache as objectsupsert()now throwsInvalidArgumentExceptionon emptyuniqueBy— fix call sites instead of relying on invalid SQL- Default cache prefixes / session cookie names switched underscores → hyphens; pin
CACHE_PREFIX,REDIS_PREFIX,SESSION_COOKIEin.envif you relied on framework defaults (avoids logging everyone out and cold caches)
Low impact (scan if applicable):
- Serialized Eloquent collections now restore eager-loaded relations (affects queued jobs)
JobAttemptedevent:$exceptionOccurred(bool) →$exception(?Throwable);QueueBusy:$connection→$connectionName- Domain routes now take precedence over non-domain routes during matching
- MySQL
DELETEwith JOIN now compilesORDER BY/LIMITinstead of silently dropping them - Custom cache stores need
touch(); custom queue drivers need size-inspection methods
Patterns
- Upgrade one major version at a time; never skip 12.x → 13.x steps
- Read the full upgrade guide: https://laravel.com/docs/13.x/upgrade
- Laravel Boost ^2.0 offers an AI-assisted
/upgrade-laravel-v13flow — useful, but review its diff like any PR - Adopt new 13.x features (attributes, JSON:API resources, AI SDK) in follow-up PRs, not the upgrade PR
Verification
- Full test suite + static analysis (PHPStan) clean
- Boot the app; verify sessions persist and caches warm correctly (prefix changes)
- Exercise queues, scheduler, and webhooks in staging before production
Signals
- GitHub stars
- 153
- Forks
- 2
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
laravel-upgrade-13- Source
- github.com/jpcaparas/superpowers-laravel