home / skills / noartem / skills / laravel-migrations-and-factories
This skill enforces safe Laravel migrations and factories, guiding when to modify or add migrations, and pairing models with seeds for realistic, tested
npx playbooks add skill noartem/skills --skill laravel-migrations-and-factoriesReview the files below or copy the command above to add this skill to your agents.
---
name: laravel-migrations-and-factories
description: Safe database change patterns; when to modify vs add migrations; always pair models with migrations and factories; seeding guidance
---
# Migrations and Factories
Keep schema changes safe, testable, and reversible.
## Commands
```
php artisan make:model Post -mfc
# Run/rollback
php artisan migrate
php artisan migrate:rollback --step=1
# Fresh DB (dangerous; dev only)
php artisan migrate:fresh --seed
```
## Rules
- Pair each new model with a migration and a factory
- If a migration was merged to `main`, never edit it—add a new one
- On feature branches, you may amend migrations created on that branch (if not merged)
- Seed realistic but minimal datasets in seeder classes; keep huge datasets external
## Factories
- Prefer state modifiers (e.g., `->state([...])`) over boolean flags
- Use relationships (e.g., `belongsTo`) in factories to build realistic graphs
- Keep factories fast; move expensive setup to seeds where possible
## Testing
- Use factories in tests; avoid manual inserts
- For integration tests touching DB, use transactions or `RefreshDatabase`
This skill teaches safe, testable Laravel database change patterns focused on migrations, models, factories, and seeding. It emphasizes rules for when to modify versus add migrations, pairing models with migrations and factories, and practical guidance for seeding and testing. The goal is reliable schema evolution and fast, maintainable test data.
The skill inspects common workflows and enforces practices: always create a migration and factory when adding a model, avoid editing migrations already merged to main, and prefer adding new migrations for schema fixes. It recommends using factory states and relationships to produce realistic test data, and separates expensive dataset creation into seeders. It also outlines safe commands and test patterns like RefreshDatabase and transactional tests.
Can I edit a migration I created on my feature branch?
Yes—if the migration hasn't been merged to main yet. Once it's merged, create a new migration instead of editing history.
Should factories create related records or rely on seeders?
Use factories to build related records for tests via relationships and states. Reserve expensive or bulk dataset creation for seeders.