Upgrade Laravel applications one major version at a time (9→10, 10→11, 11→12). Use when user wants to upgrade their Laravel framework version. Auto-detects current version from composer.json, identifies breaking changes, and applies necessary code fixes.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add NeverSight/skills_feed --skill laravel-upgrade --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Laravel Upgrade?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/neversight-laravel-upgrade)More formats (shields.io, HTML) on the badges page.
---
name: laravel-upgrade
description: Upgrade Laravel applications one major version at a time (9→10, 10→11, 11→12). Use when user wants to upgrade their Laravel framework version. Auto-detects current version from composer.json, identifies breaking changes, and applies necessary code fixes.
---
# Laravel Upgrade
Upgrade Laravel applications one major version at a time. Supports: 9→10, 10→11, 11→12.
## Workflow
### 1. Detect Current Version
Read `composer.json` and find the `laravel/framework` version constraint:
```php
// Example: "laravel/framework": "^10.0" means Laravel 10.x
```
Determine target version (current + 1). If already on Laravel 12, inform user they're on the latest supported version.
### 2. Load Upgrade Guide
Based on detected versions, read the appropriate reference file:
| Current | Target | Reference File |
|---------|--------|----------------|
| 9.x | 10.x | [references/from-9-to-10.md](references/from-9-to-10.md) |
| 10.x | 11.x | [references/from-10-to-11.md](references/from-10-to-11.md) |
| 11.x | 12.x | [references/from-11-to-12.md](references/from-11-to-12.md) |
### 3. Scan and Fix
For each breaking change in the guide, scan the codebase and apply fixes:
**High Impact** (always check):
- `composer.json` dependency versions
- PHP version requirements
- Database migrations using deprecated methods
**Medium Impact** (check relevant files):
- Model `$dates` property → `$casts` (9→10)
- Database expressions with `(string)` casting (9→10)
- Column modification migrations missing attributes (10→11)
- `HasUuids` trait behavior change (11→12)
**Low Impact** (check if patterns found):
- Deprecated method calls (`Bus::dispatchNow`, `Redirect::home`, etc.)
- Contract interface changes
- Configuration file updates
### 4. Update Dependencies
After code fixes, update `composer.json`:
```bash
# Update laravel/framework constraint to target version
# Update related packages per upgrade guide
composer update
```
### 5. Post-Upgrade Verification
- Run `php artisan` to verify framework boots
- Run test suite if available
- Check for deprecation warnings in logs
## Common Patterns
### Dependency Updates (all upgrades)
Search `composer.json` for outdated constraints and update per guide.
### Model $dates to $casts (9→10)
```php
// Before
protected $dates = ['deployed_at'];
// After
protected $casts = ['deployed_at' => 'datetime'];
```
Search pattern: `protected \$dates\s*=`
### Database Expression Casting (9→10)
```php
// Before
$string = (string) DB::raw('select 1');
// After
$string = DB::raw('select 1')->getValue(DB::connection()->getQueryGrammar());
```
### Column Modification (10→11)
Migrations using `->change()` must now include all modifiers:
```php
// Before (implicit retention)
$table->integer('votes')->nullable()->change();
// After (explicit)
$table->integer('votes')->unsigned()->default(1)->nullable()->change();
```
### HasUuids Trait (11→12)
```php
// Before (ordered UUIDv4)
use Illuminate\Database\Eloquent\Concerns\HasUuids;
// After (if you need UUIDv4 behavior)
use Illuminate\Database\Eloquent\Concerns\HasVersion4Uuids as HasUuids;
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!